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.
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.
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);
;