这个问题是关于从多个表,连接,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放在一起的运气。
请帮忙, 谢谢!
答案 0 :(得分:0)
据我所知,您可以使用以下方法实现。请转到页面底部。你可以找到加入...尝试一次..