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


Posted in PHP onOctober 15, 2019

问题描述:在使用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的问题就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持三水点靠木。

PHP 相关文章推荐
用PHP实现文件上传二法
Oct 09 PHP
php sprintf()函数让你的sql操作更安全
Jul 23 PHP
PHP HTML JavaScript MySQL代码如何互相传值的方法分享
Sep 30 PHP
如何判断php数组的维度
Jun 10 PHP
计算php页面运行时间的函数介绍
Jul 01 PHP
php使用pdo连接报错Connection failed SQLSTATE的解决方法
Dec 15 PHP
php面向对象与面向过程两种方法给图片添加文字水印
Aug 26 PHP
PHP使用PDO操作数据库的乱码问题解决方法
Apr 08 PHP
DWZ+ThinkPHP开发时遇到的问题分析
Dec 12 PHP
php 中奖概率算法实现代码
Jan 25 PHP
PHP面向对象五大原则之接口隔离原则(ISP)详解
Apr 04 PHP
PHP 文件上传限制问题
Sep 01 PHP
解决Laravel5.5下的toArray问题
Oct 15 #PHP
laravel通过a标签从视图向控制器实现传值
Oct 15 #PHP
laravel在中间件内生成参数并且传递到控制器中的2种姿势
Oct 15 #PHP
laravel 实现划分admin和home 模块分组
Oct 15 #PHP
laravel 根据不同组织加载不同视图的实现
Oct 14 #PHP
Laravel 创建可以传递参数 Console服务的例子
Oct 14 #PHP
laravel 自定义常量的两种方案
Oct 14 #PHP
You might like
destoon找回管理员密码的方法
2014/06/21 PHP
[原创]php正则删除img标签的方法示例
2017/05/27 PHP
JS版网站风格切换实例代码
2008/10/06 Javascript
Wordpress ThickBox 添加“查看原图”效果代码
2010/12/11 Javascript
js通过googleAIP翻译PHP系统的语言配置的实现代码
2011/10/17 Javascript
JavaScript闭包 懂不懂由你反正我是懂了
2011/10/21 Javascript
javascript日期转换 时间戳转日期格式
2011/11/05 Javascript
JavaScript的模块化:封装(闭包),继承(原型) 介绍
2013/07/22 Javascript
Jquery下EasyUI组件中的DataGrid结果集清空方法
2014/01/06 Javascript
解决用jquery load加载页面到div时,不执行页面js的问题
2014/02/22 Javascript
JavaScript获取网页、浏览器、屏幕高度和宽度汇总
2014/12/18 Javascript
JS+CSS实现的竖向简洁折叠菜单效果代码
2015/10/22 Javascript
Seajs 简易文档 提供简单、极致的模块化开发体验
2016/04/13 Javascript
mpvue中配置vuex并持久化到本地Storage图文教程解析
2018/03/15 Javascript
解决vue-cli3 使用子目录部署问题
2018/07/19 Javascript
angularjs获取到My97DatePicker选中的值方法
2018/10/02 Javascript
javascript中数组的常用算法深入分析
2019/03/12 Javascript
JS正则表达式验证密码强度
2020/03/18 Javascript
Python函数参数类型*、**的区别
2015/04/11 Python
python框架django基础指南
2016/09/08 Python
python3设计模式之简单工厂模式
2017/10/17 Python
Python使用base64模块进行二进制数据编码详解
2018/01/11 Python
Python使用Matplotlib模块时坐标轴标题中文及各种特殊符号显示方法
2018/05/04 Python
pycharm部署、配置anaconda环境的教程
2020/03/24 Python
windows上彻底删除jupyter notebook的实现
2020/04/13 Python
Python命名空间namespace及作用域原理解析
2020/06/05 Python
python多线程semaphore实现线程数控制的示例
2020/08/10 Python
3D动画《斗罗大陆》上线当日播放过亿
2021/03/16 国漫
您的健身减肥和健康饮食专家:vitafy
2017/06/06 全球购物
Senreve官网:美国旧金山的奢侈手袋品牌
2019/03/21 全球购物
男方父母证婚词
2014/01/12 职场文书
党风廉设责任书
2014/04/16 职场文书
幼儿园秋季开学寄语
2014/08/02 职场文书
反对四风自我剖析材料
2014/10/07 职场文书
聘用合同范本
2015/09/21 职场文书
Android RecyclerView实现九宫格效果
2022/06/28 Java/Android