Laravel / Eloquent / DB Query - 当为null且不为null时加入

时间:2015-04-28 17:07:06

标签: php mysql laravel join eloquent

我尝试使用此代码时没有取得任何成功:

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

1 个答案:

答案 0 :(得分: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()