【问题标题】:Laravel/Eloquent/DB Query - Join when is null and not nullLaravel/Eloquent/DB 查询 - 当为空且不为空时加入
【发布时间】:2015-07-07 16:10:57
【问题描述】:

我正在尝试这段代码但没有成功:

MyModel::join('countries', 'countries.id', '=', 'messages.from_country_id')
         ->join('users', 'users.id', '=', 'messages.user_id')
         ->where('messages.id', '=', $id)
         ->select('users.name', 'messages.from_name', 'messages.from_email', 'messages.content', 'countries.code AS c_code', 'countries.name AS c_name')->firstOrFail();

但在某些情况下,messages.user_id 为空。我想要的是检索所有消息,每个message 都带有正确的users.name(当它可用时)。

【问题讨论】:

    标签: php mysql laravel join eloquent


    【解决方案1】:

    我认为您要的是left join,它将获取所有消息以及拥有它的用户的用户名:

    MyModel::join('countries', 'countries.id', '=', 'messages.from_country_id')
         ->leftJoin('users', 'users.id', '=', 'messages.user_id')
         ->where('messages.id', '=', $id)
         ->select('users.name', 'messages.from_name', 'messages.from_email', 'messages.content', 'countries.code AS c_code', 'countries.name AS c_name')->firstOrFail()
    

    【讨论】:

    • 最佳答案!即使消息为空,记录也会返回。谢谢。
    猜你喜欢
    • 2018-02-19
    • 2016-11-23
    • 1970-01-01
    • 1970-01-01
    • 2022-09-23
    • 1970-01-01
    • 2021-05-19
    • 2021-10-26
    • 1970-01-01
    相关资源
    最近更新 更多