gpt4 book ai didi

php - Doctrine2 - 从没有直接关系的多个表中选择

转载 作者:行者123 更新时间:2023-11-30 23:10:03 24 4
gpt4 key购买 nike

这个问题是关于从多个表中选择数据、连接、Doctrine2、ResultSetMapping、DQL 等等。

我有 4 个表:

  • 用户
  • 联系
  • 联系电话
  • 打电话

关系如图:http://i.stack.imgur.com/762Jw.png

每个用户可以有多个联系人,每个联系人可以有多个电话,每个用户可以与他的联系人进行多次通话。就像在现实世界中一样...为了清楚起见,我限制了每个表中的字段数量。

所以我的问题是,在显示特定用户的调用列表时,我不知道如何准确地将调用号码映射到联系人姓名。

如果我想列出用户 1 的所有调用,我会这样做:

    $callRepository = $this->getDoctrine()->getRepository('MyBundle:Call');
$calls = $callRepository->findAll(array('user' => 1));

但这只会给我该用户的所有调用列表,不会将号码 (call.number) 与姓名 (contact.name) 相关联。

我可以通过以下查询使用纯 SQL 实现我想要的:

SELECT
c.number,
contact.name
FROM
`call` c
JOIN contact_phone cp ON
cp.number = c.number
JOIN contact ON
contact.id = cp.contact_id
WHERE
c.user_id = contact.user_id
AND c.user_id = 1

请注意,我不想选择所有调用(使用 SQL),然后使用来自 PHP 层的另一个查询将数字映射到名称,因为这样我将无法按名称搜索调用。

我认为 ResultSetMapping 可以在这种情况下帮助我,但我没有运气将 SQL 查询和 ResultSetMapping 放在一起。

请帮忙,谢谢!

最佳答案

据我所知,您可以使用以下方法来实现。请到页面底部。你可以找到连接...尝试一次..

http://docs.doctrine-project.org/projects/doctrine1/en/latest/en/manual/dql-doctrine-query-language.html

关于php - Doctrine2 - 从没有直接关系的多个表中选择,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20219693/

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