解决在laravel中leftjoin带条件查询没有返回右表为NULL的问题
2019-10-15 18:08
1291 查看
问题描述:在使用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();
希望能帮到大家!
以上这篇解决在laravel中leftjoin带条件查询没有返回右表为NULL的问题就是小编分享给大家的全部内容了,希望能给大家一个参考
您可能感兴趣的文章:
相关文章推荐
- laravel 解决leftjoin带条件查询没有返回右表为NULL的记录问题
- 在使用Hibernate时,因为一个查询需要更多的表连接而要使用SQL来解决性能问题。然而返回的结果集中包含了没有映射的Entity类中的表字段,在这个SQL中还有使用如何将层次关系的父子结点显示为横行
- 数据值为NULL,导致条件查询不到正确结果,ISNULL函数的使用解决问题
- 解决mybatis使用char类型字段查询oracle数据库时结果返回null问题
- 查询数据库返回cursor,如何判断没有符合条件的记录。判断条件不是cursor==null 哦
- Hibernate查询视图返回null问题说明及解决办法
- MySQL 中文显示乱码以及中文查询条件返回0条结果的问题解决
- getBestProvider总是返回null问题的解决之道
- Linq to Sql 或linq to entities 与SQL 查询结果不一致,返回重复结果问题解决方法
- occal [问题解决]ORA-01427: 单行子查询返回多个行
- 巧用case when 解决多条件模糊查询问题
- linq to sql 中,如何解决多条件查询问题,答案,用表达式树!
- 写了一个查询数据库的程序,不熟的Tomcat6。查询条件为英文时运行正常,为中文时出现乱码。后在tomcap的server.xml中加入useBodyEncodingForURI="true解决了问题
- 解决UINavigationController自定义返回键后没有侧滑返回效果的问题
- MyBatis 无符合条件的查询结果时返回值问题
- 巧用case when 解决多条件模糊查询问题
- 4000 SQL之解决where 1=1 问题及优化多条件查询
- linq查询条件参数化--解决实际问题记录
- 解决Android中GridView、ListView的getChildAt方法返回null的问题
- Mybatis查询数据库返回Null的三种解决方法