Doctrine: jak v entitě zavolat DQL?
- motorcb
- Člen | 552
Zdravím,
mám entitu team:
class Team extends \Kdyby\Doctrine\Entities\BaseEntity
V této entitě bych chtěl vypisovat statitiky týmu (celkový počet odehraných zápasů, počet vyhraných zápasů, prohraných, remíz…). K tomu budu pořebovat DQL dotaz. K DQL ale budu potrebovat entity managet. Jak udělat v entitě DQL dotaz?
public function getMatches() {
$query = $em->createQuery('SELECT ...');
$users = $query->getResult();
}
- Azathoth
- Člen | 495
entita může poměrně účinně operovat se svými daty (entitami, na
kreré má asociaci) pomocí Criteria objektů. Na kolekci můžeš zavolat
metodu matching, které pošleš nějaká Criteria. tam můžeš použít where,
orderby, apod…
http://doctrine-orm.readthedocs.org/…iations.html#…
ale někdy je dotaz moc složitý a musíš to udělat v service.
na jednom projektu si posílám entitymanager do entity přes event, aby mohla
entita dělat složité dotazy, ale to je jen kvůli tomu, že zrovna v tom
usecasu by používání setvice vypadalo naprosto otřesně a ten kód by byl
mnohem hůř čitelný.
Editoval Azathoth (12. 7. 2015 1:21)