[英]Doctrine query: best approach to creating a select query joining three tables?
我需要加入三個表來提取結果集,但是我不確定是否應該使用createQueryBuilder,createNativeQuery或其他方法。
我的三張桌子是
在代碼中正確注釋了實體。 例如,在電子郵件實體中:
/**
* @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;
我需要做的是從電子郵件中提取一組記錄,其中成員都與一個公司相關聯。
MySQL中的以下SQL返回了我所需的內容,但是我是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等?
更新,我能夠使用普通的舊SQL使其正常工作,但是我不確定這在Doctrine世界中是否可以接受。 歡迎有經驗的人士提出意見和建議!
$conn = $this->em->getConnection();
$sql = "select e.* from fitchek.email e join fitchek.member m on m.id = e.member join fitchek.company c on c.id = m.current_company where m.current_company = ?";
$stmt = $conn->prepare($sql);
$stmt->bindValue(1, $company_uuid);
$stmt->execute();
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.