解決在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;
沒錯(cuò),正確寫法是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的問題就是小編分享給大家的全部內(nèi)容了,希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。
相關(guān)文章
PHP使用流包裝器實(shí)現(xiàn)WebShell的方法
這篇文章主要介紹了PHP使用流包裝器實(shí)現(xiàn)WebShell的方法,非常不錯(cuò),具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2018-07-07Yii框架實(shí)現(xiàn)多數(shù)據(jù)庫配置和操作的方法
這篇文章主要介紹了Yii框架實(shí)現(xiàn)多數(shù)據(jù)庫配置和操作的方法,結(jié)合實(shí)例形式分析了Yii框架多數(shù)據(jù)庫的配置技巧與相關(guān)操作注意事項(xiàng),需要的朋友可以參考下2017-05-05Laravel5.1 框架Request請求操作常見用法實(shí)例分析
這篇文章主要介紹了Laravel5.1 框架Request請求操作常見用法,結(jié)合實(shí)例形式分析了Laravel5.1 框架Request請求操作常見的屬性和方法,及相關(guān)操作注意事項(xiàng),需要的朋友可以參考下2020-01-01php教程之魔術(shù)方法的使用示例(php魔術(shù)函數(shù))
這篇文章主要介紹了php的魔術(shù)方法的使用示例(php魔術(shù)函數(shù)),需要的朋友可以參考下2014-02-02PHP通過反射動態(tài)加載第三方類和獲得類源碼的實(shí)例
這篇文章主要介紹了PHP通過反射動態(tài)加載第三方類和獲得類源碼的方法,一般在解析XML文件時(shí)會用到,需要的朋友可以參考下2015-11-11一張表搞清楚php is_null、empty、isset的區(qū)別
這篇文章主要介紹了一張表搞清楚php is_null、empty、isset的區(qū)別,isset 判斷變量是否已存在,empty 判斷變量是否為空或?yàn)?,is_null 判斷變量是否為NULL,需要的朋友可以參考下2015-07-07