溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點(diǎn)擊 登錄注冊 即表示同意《億速云用戶服務(wù)條款》

如何解決在laravel中l(wèi)eftjoin帶條件查詢沒有返回右表為NULL的問題

發(fā)布時(shí)間:2021-07-21 09:56:26 來源:億速云 閱讀:169 作者:小新 欄目:開發(fā)技術(shù)

小編給大家分享一下如何解決在laravel中l(wèi)eftjoin帶條件查詢沒有返回右表為NULL的問題,希望大家閱讀完這篇文章之后都有所收獲,下面讓我們一起去探討吧!

問題描述:在使用laravel的左聯(lián)接查詢的時(shí)候遇到一個(gè)問題,查詢中帶了右表一個(gè)篩選條件,導(dǎo)致結(jié)果沒有返回右表為空的記錄。

先附上代碼:

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條件是不行的,會導(dǎo)致返回結(jié)果不返回class為空記錄,正確是寫法應(yīng)該是

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里這個(gè)mysql表達(dá)式的寫法是怎樣的,我查閱了多個(gè)手冊。。。及國外網(wǎng)友求助問答,得到了以下答案

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中l(wèi)eftjoin帶條件查詢沒有返回右表為NULL的問題”有了一定的了解,如果想了解更多相關(guān)知識,歡迎關(guān)注億速云行業(yè)資訊頻道,感謝各位的閱讀!

向AI問一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場,如果涉及侵權(quán)請聯(lián)系站長郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI