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

问题描述:在使用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();

希望能帮到大家!

更多相关文章

  1. Android中文API (39) —— AbsSpinner
  2. 关于android中的各种路径对应的方法
  3. 字符串和数组遍历
  4. android之有返回结果跳转intent
  5. Android手动创建和解析Json
  6. android 4.4.3 css hack 写法
  7. 函数参数及返回值、模板字面量及模板函数演示
  8. android 事件处理
  9. Android(安卓)编程下 Touch 事件的分发和消费机制

随机推荐

  1. android Application类的详细介绍
  2. Android NDK报错(Eclipse)及解决方法
  3. 使用迅雷代替SDK Manager快速下载Android
  4. 《转载》Android(安卓)AlertDialog 方法s
  5. 【Android】16.5 Android内置的系统服务
  6. android 加载动态库
  7. Android 中文api (88)――SharedPreferen
  8. Android(安卓)Model正确使用姿势——Auto
  9. android中调用接口发送短信
  10. Android(安卓)sensor 实用篇