当前位置:首页 > CMS教程 > 其它CMS > 列表

解决在laravel中leftjoin带条件查询没有返回右表为NULL的问题

发布:smiling 来源: PHP粉丝网  添加日期:2022-01-04 19:52:22 浏览: 评论:0 

今天小编就为大家分享一篇解决在laravel中leftjoin带条件查询没有返回右表为NULL的问题,具有很好的参考价值,希望对大家有所帮助,一起跟随小编过来看看吧。

问题描述:在使用laravel的左联接查询的时候遇到一个问题,查询中带了右表一个筛选条件,导致结果没有返回右表为空的记录。

先附上代码:

  1. DB::table('users as u'
  2.   ->select('u.user_id','c.class'
  3.   ->leftJoin('class as c','c.user_id','=','u.user_id'
  4.   ->where('c.status','=',2) 
  5.   ->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表达式的写法是怎样的,我查阅了多个手册。。。及国外网友求助问答,得到了以下答案

  1. DB::table('users as u'
  2.   ->select('u.user_id','c.class'
  3.   ->leftJoin('class as c'function($join
  4.   { 
  5.     $join->on('c.user_id''=''u.user_id'
  6.     ->on('c.status''=''2'); 
  7.   }) 
  8.   ->get(); 

希望能帮到大家!

Tags: laravel leftjoin NULL

分享到: