問題描述:在使用laravel的左聯接查詢的時候遇到一個問題,查詢中帶了右表一個篩選條件,導致結果沒有返回右表為空的記錄。
先附上代碼:
DB::table('users as u')
->select('u.user_id','c.class')
->leftJoin('class as c','c.user_id','=','u.user_id')
->where('c.status','=',2)
->get();
解決方案:
1.在mysql的角度上說,直接加where條件是不行的,會導致返回結果不返回class為空記錄,正確是寫法應該是
select u.user_id,c.class from users u left join class c on u.user_id=c.user_id and c.status=2;
沒錯,正確寫法是left join .. on .. and 而非 left join .. on .. where
2.那么,在laravel里這個mysql表達式的寫法是怎樣的,我查閱了多個手冊。。。及國外網友求助問答,得到了以下答案
DB::table('users as u')
->select('u.user_id','c.class')
->leftJoin('class as c', function($join)
{
$join->on('c.user_id', '=', 'u.user_id')
->on('c.status', '=', '2');
})
->get();
希望能幫到大家!
以上這篇解決在laravel中leftjoin帶條件查詢沒有返回右表為NULL的問題就是小編分享給大家的全部內容了,希望能給大家一個參考,也希望大家多多支持腳本之家。
您可能感興趣的文章:- laravel join關聯查詢代碼實例
- 關于laravel 子查詢 & join的使用
- laravel高級的Join語法詳解以及使用Join多個條件
- Laravel 連接(Join)示例
- laravel中Join語法以及使用Join多個條件