【问题标题】:Join 3 tables using Laravel Query Builder使用 Laravel 查询构建器连接 3 个表
【发布时间】:2015-03-02 00:39:49
【问题描述】:

我正在尝试在我正在开发的消息发布网站上实现转发操作按钮,并将这些转发的消息与用户最近发布的消息一起输出。

目前我有一个 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 查询构建器

【问题讨论】:

    标签: php sql laravel laravel-4


    【解决方案1】:

    您可以简单地在查询中添加另一个联接。

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

    并完全按照您现在在查询中所做的那样查询其他列。

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

    ->leftJoin()
    

    再次,正是您现在所做的方式。

    【讨论】:

    • 这行得通,但不是我想要的方式!实际上,我想要的是我的用户转发消息,例如 Twitter 转发功能。
    猜你喜欢
    • 2021-01-14
    • 2018-07-20
    • 2017-06-29
    • 2014-05-29
    • 2020-08-29
    • 2018-04-25
    • 1970-01-01
    • 1970-01-01
    • 2023-04-09
    相关资源
    最近更新 更多