У меня есть три таблицы, к которым мне нужно присоединиться, чтобы извлечь набор результатов, и я не уверен, стоит ли мне использовать createQueryBuilder, createNativeQuery или какой-то другой подход.
Мои три таблицы
- Электронная почта (присоединяется к участнику через поле: member)
- Участник (присоединяется к компании через поле: current_company)
- Company
Объектыправильно аннотирован в коде.Например, в объекте электронной почты:
/**
* @ORM\ManyToOne(targetEntity="Member")
* @ORM\JoinColumn(name="member", referencedColumnName="id", nullable=true)
*/
protected $member;
В объекте участника:
/**
* @ORM\ManyToOne(targetEntity="Company")
* @ORM\JoinColumn(name="current_company", referencedColumnName="id", nullable=true)
*/
protected $current_company;
И в объекте компании:
/**
* @ORM\ManyToMany(targetEntity="Member", mappedBy="companies")
*/
protected $members;
Что мне нужно сделатьэто извлечение набора записей из электронной почты, где все участники связаны с одной компанией.
Следующий SQL в MySQL возвращает то, что мне нужно, но я новичок в Doctrine и не знаю, как лучше всего перевести этот запросв что-то, что Doctrine может использовать для извлечения тех же результатов:
select e.* from email e
join member m on m.id = e.member
join company c on c.id = m.current_company
where m.current_company = '95f1b5a4-03c9-11e9-85b1-989096db2d5f';
Может ли кто-нибудь помочь, и какой подход следует использовать createQueryBuilder, createNativeQuery и т. д.?