[Doctrine2] Organizace dotazů
- fordo.pytlik
- Člen | 26
Ahoj,
snažím se udělat trochu pořádek v starším projektu, který používá
Doctirne2. Problém je v tom, že repozitáře jsou přeplněny spoustou
funkcí typu findX...()
a je jich tam mraky. Ale při bližším
zkoumáním vidím, že je to pořád dokola to samé (přesněji významná
podmnožina je pořád dokola stejná).
Mám 4 parametry, podle kterých filtruji např. uživatele. Jednou potřebuji uživatele přihlášené za poslední týden, kteří mají e-mail, podruhé uživatele přihlášené za poslední týden, nemají objednávku. 2 funkce, 3 podmínky a jedna podmínka se opakuje 2× pořád dokola:
<?php
class UserRepository extends AbstracRepository
{
/**
* @return User[]
*/
public function findLoggedUserWithMail()
{
$this->em->createQueryBuilder()
->select('u')->from(User::class, 'u')
->where('logged >= :logged', $weakBefore) // <-- opakující se část
->andWhere('email IS NOT NULL')
->getQuery->getResult();
}
/**
* @return User[]
*/
public function findLoggedUserWithoutOrder()
{
$this->em->createQueryBuilder()
->select('u')->from(User::class, 'u')
->where('logged >= :logged', $weakBefore) // <-- opakující se část
->andWhere('orderCount = 0')
->getQuery->getResult();
}
}
?>
Když jsou takle dvě funkce, tak to nevadí, ale když jich je tam víc, tak se člověk začne ztrácet. V Doctrine2 spíš začínám a přečetl jsem spousty článků, návodů dokumentaci apod, ale většinou se zabývají základy. Rád bych věděl nějak best-practies jak organizovat větší množství „dotazů“ skládání dotazů apod. Nějaké praktické zkušenosti. Klidně nějaké články nebo videa. Děkuji.
- fizzy
- Backer | 49
Rozdelit na viacero mensich repozitarov alebo https://ocramius.github.io/…t-practices/#/90