Возможно ли в Доктрине использовать инструкцию IN и передать список сущностей в качестве параметра для инструкции IN?Doctrine DQL, используя инструкцию IN с объектами
Например, со следующим соотношением:
/**
* @var \Doctrine\Common\Collections\Collection
*
* @ORM\OneToMany(targetEntity="Calendar", mappedBy="education", cascade={"persist"})
*/
private $calendar;
Я хотел бы сделать запрос как:
SELECT p FROM Education p WHERE p.calendar IN (:calendar)
: календарь параметру массив объектов.
$query->setParameter('calendar', array($singleEntity,$singleEntity2));
Но это дает следующее сообщение об ошибке:
near 'calendar IN (:calendar)': Error: Invalid PathExpression. StateFieldPathExpression or SingleValuedAssociationField
Для DQL (не DML?) Вам нужно будет присоединиться к календарю: SELECT education FROM EducationClassName education LEFT JOIN education.calendar calendar WHERE calendar.id IN (: calendarIds) Я всегда использовал идентификаторы для операторов IN, поэтому я знаю, что они но вы можете попробовать использовать полный объект без .id и посмотреть, что произойдет. – Cerad
@Cerad Обновлен DML для DQL. – Laurence
@Cerad Это именно обходной путь, который я использовал. – Laurence