[Doctrine2] Organizace dotazů

fordo.pytlik
Člen | 26
+
0
-

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
+
0
-

Rozdelit na viacero mensich repozitarov alebo https://ocramius.github.io/…t-practices/#/90