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

 更新时间:2019年10月15日 09:39:47   作者:php_girl  
今天小编就为大家分享一篇解决在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();

希望能帮到大家!

以上这篇解决在laravel中leftjoin带条件查询没有返回右表为NULL的问题就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持脚本之家。

相关文章

  • Laravel5中防止XSS跨站攻击的方法

    Laravel5中防止XSS跨站攻击的方法

    这篇文章主要介绍了Laravel5中防止XSS跨站攻击的方法,结合实例形式分析了Laravel5基于Purifier扩展包集成HTMLPurifier防止XSS跨站攻击的相关操作技巧,需要的朋友可以参考下
    2016-10-10
  • 一段防盗连的PHP代码

    一段防盗连的PHP代码

    一段防盗连的PHP代码...
    2006-12-12
  • symfony表单与页面实现技巧

    symfony表单与页面实现技巧

    这篇文章主要介绍了symfony表单与页面实现技巧,实例分析了symfony表单与页面的实现方法与相关注意事项,需要的朋友可以参考下
    2015-01-01
  • PHP7新特性foreach 修改示例介绍

    PHP7新特性foreach 修改示例介绍

    这篇文章主要介绍了PHP7新特性foreach修改内容介绍,非常不错,介绍的非常详细,具有参考借鉴价值,对php7新特征相关知识感兴趣的朋友一起学习吧
    2016-08-08
  • Zend Framework框架db类的分页示例分享

    Zend Framework框架db类的分页示例分享

    这篇文章主要介绍了Zend Framework框架db类的分页示例,代码很简单,大家看一下注释就可以使用了
    2014-03-03
  • PHP array_reduce()函数的应用解析

    PHP array_reduce()函数的应用解析

    这篇文章主要介绍了PHP array_reduce()的应用,本文通过代码举例给大家介绍的非常详细,具有一定的参考借鉴价值,需要的朋友可以参考下
    2018-10-10
  • Laravel框架Eloquent ORM删除数据操作示例

    Laravel框架Eloquent ORM删除数据操作示例

    这篇文章主要介绍了Laravel框架Eloquent ORM删除数据操作,结合实例形式分析了laravel框架ORM三种删除数据的方式,需要的朋友可以参考下
    2019-12-12
  • ThinkPHP让分页保持搜索状态的方法

    ThinkPHP让分页保持搜索状态的方法

    这篇文章主要介绍了ThinkPHP让分页保持搜索状态的方法,需要的朋友可以参考下
    2014-07-07
  • php实现断点续传大文件示例代码

    php实现断点续传大文件示例代码

    这篇文章主要介绍了如何用php实现断点续传大文件,文中代码非常细致,帮助大家学习和参考,感兴趣的朋友可以了解下
    2020-06-06
  • ThinkPHP数据操作方法总结

    ThinkPHP数据操作方法总结

    这篇文章主要介绍了ThinkPHP数据操作方法,以实例形式较为详细的分析总结了ThinkPHP添加、更新、查询及删除数据的实现技巧,具有一定参考借鉴价值,需要的朋友可以参考下
    2015-09-09

最新评论