使用Laravel Query Builder加入3个表

时间:2015-01-04 06:53:06

标签: php sql laravel laravel-4

我正在尝试在我正在处理的邮件发布网站上实施转发操作按钮,并输出这些转发的邮件以及用户最近发布的邮件。

暂时我有一个USERS表和一个MESSAGES表。为了检索最近发布的消息,我使用以下查询。

return DB::table('messages')
->join('users', 'users.username', '=', 'messages.username')
->select('users.username as username','messages.id as id','messages.message as message', 'users.firstName as firstName','users.lastName as lastName') ->orderBy('messages.id', 'desc')
->paginate(20);

但是现在我添加了一个RESHARES表,其中存储了转发消息的人的用户名 message_id 。所以我真正想知道的是如何加入这些表并检索转发的消息和最近发布的消息。

请将您的答案发布到 Laravel查询生成器

1 个答案:

答案 0 :(得分:0)

您只需在查询中添加其他联接即可。

DB::table(...)
->join(table2...)
->join(table3...)
->select(...)
->paginate(...)

并查询其他列,就像您现在查询一样。

由于并非每条消息都可能被转发,因此您应该考虑使用左连接作为转发表。您可以使用

执行此操作
->leftJoin()

再一次,就像你现在的做法一样。