2015-04-28 75 views
1

我想這個代碼沒有任何成功的時候:Laravel /雄辯/ DB查詢 - 加入爲空,而不是空

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

我想你問的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()