Laravel查询生成器中的多个关系

时间:2013-05-08 15:01:22

标签: laravel relationship pivot-table laravel-4 query-builder

我有一个事件模型和一个名为getEvents()的方法,它从我的数据库中的事件表中获取事件列表。

每个事件都会有与之相关的代表,这就变得很复杂。

有3个表,delegate_event(这是一个数据透视表,将委托链接到基于event_id和delegate_id的事件),委托(包含id字段和contact_id字段的简单表)和一个包含联系人的表关于联系人列表的信息。

委托表使用contact_id链接到联系人表格,并提取与该联系人相关的各种信息。

我正在使用Query Builder和leftJoin方法来获取每个事件所需的大部分信息,但我现在需要通过一个委托列表。 http://paste.laravel.com/qSa

我无法通过delegate_event表找到如何加入与该事件关联的代理相关联的联系人。

请有人帮助我。感谢。

1 个答案:

答案 0 :(得分:0)

您需要为事件用户提供多对多表,因为多个事件将有多个与之关联的用户(代理)。

这就是我所拥有的:

mtm_event_user:ID,event,user

事件: id,姓名(事件)

用户: ID,联系

联系人: ID,姓名,地址等

这是我的查询,你可以修改SELECT以适应你需要的字段。

SELECT *
FROM contacts
INNER JOIN users ON users.contact = contacts.ID
INNER JOIN mtm_event_user AS meu ON meu.user = users.id
WHERE meu.`event` = 1

对于多个事件,请使用ORDER BY meu替换WHERE meu。event = 1. event