gpt4 book ai didi

php - Doctrine 查询: best approach to creating a select query joining three tables?

转载 作者:行者123 更新时间:2023-11-29 16:31:17 24 4
gpt4 key购买 nike

我需要连接三个表来提取结果集,但我不确定是否应该使用 createQueryBuilder、createNativeQuery 或其他方法。

我的三张 table 是

  • 电子邮件(通过字段加入成员(member):成员(member))
  • 成员(通过字段加入公司:current_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;

我需要做的是从电子邮件中提取一组记录,其中的成员都与一个公司相关联。

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();

关于php - Doctrine 查询: best approach to creating a select query joining three tables?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53859604/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com