Doctrine 2 WHERE IN clause using a collection of entities Doctrine 2 WHERE IN clause using a collection of entities symfony symfony

Doctrine 2 WHERE IN clause using a collection of entities


A pull request I made about this has been merged into Doctrine ORM 2.5, so you can simply do this now:

$q = $this->createQueryBuilder('v')    ->select('v')    ->andWhere('v.workingHours IN (:workingHours)')    ->setParameter('workingHours', $workingHours);;

The latest version of Doctrine now allows collection parameters and will automatically make use of the primary key of each of the collection entries.


Try to set IDs as parameter

$ids = array();foreach($workingHours as $w) {    $ids[] = $w->getId();}

Then

$q = $this->createQueryBuilder('v')    ->select('v')    ->andWhere('v.workingHours IN (:workingHours)')    ->setParameter('workingHours', $ids);;


I suggest using DQL in this way:

$qb = $this->createQueryBuilder('v')    ->andWhere($qb->expr()->in('v.workingHours', $ids));;

And let Doctrine handle the expression & quotation work for you.