Próbuję utworzyć zapytanie w Doctrine 2, które znajduje wszystkie encje Vacancy
, które są powiązane z dowolną z podanych VacancyWorkingHours
encji.Doctrine 2 GDZIE W klauzuli używającej kolekcji podmiotów
Podmiot Vacancy
wygląda następująco:
/**
* 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 */
}
Moja kwerenda aktualnie wygląda następująco, ale nie zwraca żadnych wyników ze względu na klauzulę WHERE. W tym przykładzie $workingHours
jest instancją Doctrine\Common\Collections\ArrayCollection
zawierający szereg VacancyWorkingHours
podmiotów
$q = $this->createQueryBuilder('v')
->select('v')
->andWhere('v.workingHours IN (:workingHours)')
->setParameter('workingHours', $workingHours->toArray());
;
Dzięki, mogłem skończyć zjeżdżaniem na tej trasie. Konkretna klauzula WHERE IN jest częścią większego zapytania, które jest budowane na podstawie różnych innych warunków, więc użycie konstruktora zapytań jest łatwiejsze z organizacyjnego punktu widzenia. –