OneToMany s podmínkou

Jak s doctrine2 podmínkovat kolekce u vazby oneToMany

ORM Doctrine je mocný nástroj, ale na některé časté úkoly si s nastavením pomocí anotací nevystačíte.

Jednodou úpravou návratových hodnot, lze podmínkovat vrácené kolekce. Doctrine v entitě dovoluje používat criteria.

Pokud chci například podmínkovat vrácení všech uživatelů spojených vazbou oneToMany, mohu použít následující rozšíření vygenerované entity.

... use Doctrine\Common\Collections\Criteria; ... /** * @ORM\OneToMany(targetEntity="CestaKVašíEntitě\Users", mappedBy="records") */ protected $users; ... // pokud je zadán $type, vracím pouze dle parametru... public function getUsers($type = null) { $criteria = Criteria::create(); if ($type != null) { $criteria->where(Criteria::expr()->eq('type',$type)); } return $this->users->matching($criteria); }

PHP Symfony říjen 2018