I'm attempting to build a query in Doctrine 2 that finds all Vacancy entities which are related to any of the given VacancyWorkingHours entities.
The Vacancy entity looks as follows:
/** * Vacancy * * @ORM\Table(name="vacancy") * @ORM\Entity(repositoryClass="JaikDean\CareersBundle\Entity\VacancyRepository") */ class Vacancy { /** * @var integer * * @ORM\Column(name="id", type="integer") * @ORM\Id * @ORM\GeneratedValue(strategy="AUTO") */ private $id; /** * @var VacancyWorkingHours * * @ORM\ManyToOne(targetEntity="VacancyWorkingHours", inversedBy="vacancies") * @ORM\JoinColumn(name="vacancy_working_hours_id", referencedColumnName="id") **/ private $workingHours; /* Other fields and methods are inconsequential */ } My query currently looks as follows, but returns no results because of the where clause. In this example, $workingHours is a Doctrine\Common\Collections\ArrayCollection instance containing a number of VacancyWorkingHours entities
$q = $this->createQueryBuilder('v') ->select('v') ->andWhere('v.workingHours IN (:workingHours)') ->setParameter('workingHours', $workingHours->toArray()); ;
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.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With