解决在laravel中leftjoin带条件查询没有返回右表为NULL的问题
问题描述:在使用laravel的左联接查询的时候遇到一个问题,查询中带了右表一个筛选条件,导致结果没有返回右表为空的记录。
先附上代码:
DB::table('usersasu') ->select('u.user_id','c.class') ->leftJoin('classasc','c.user_id','=','u.user_id') ->where('c.status','=',2) ->get();
解决方案:
1.在mysql的角度上说,直接加where条件是不行的,会导致返回结果不返回class为空记录,正确是写法应该是
selectu.user_id,c.classfromusersuleftjoinclassconu.user_id=c.user_idandc.status=2;
没错,正确写法是leftjoin..on..and而非leftjoin..on..where
2.那么,在laravel里这个mysql表达式的写法是怎样的,我查阅了多个手册。。。及国外网友求助问答,得到了以下答案
DB::table('usersasu') ->select('u.user_id','c.class') ->leftJoin('classasc',function($join) { $join->on('c.user_id','=','u.user_id') ->on('c.status','=','2'); }) ->get();
希望能帮到大家!
以上这篇解决在laravel中leftjoin带条件查询没有返回右表为NULL的问题就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持毛票票。
声明:本文内容来源于网络,版权归原作者所有,内容由互联网用户自发贡献自行上传,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任。如果您发现有涉嫌版权的内容,欢迎发送邮件至:czq8825#qq.com(发邮件时,请将#更换为@)进行举报,并提供相关证据,一经查实,本站将立刻删除涉嫌侵权内容。