php laravel左连接leftJoin多条where语句

php laravel左连接leftJoin多条where语句

通常情况下我们在做leftjoin连接时需要对不止一个条件进行进行匹配,这时候就需要使用闭包方式,如下:

leftjoin('db', function ($join) {···}); 

leftjoin多条件查询,无非以下三种情况。

  1. 并且关系(&&)且为字段名称,使用on,代码示例如下:
$roomUuid = 1;
$chatInfo = DB::table('chat_info')
    ->where('chat_info.room_uuid', $roomUuid)
    ->leftJoin('user_rooms', function ($join) {
        $join->on('user_rooms.user_uuid', '=', 'chat_info.user_uuid')
            ->on('user_rooms.room_uuid', '=', 'chat_info.room_uuid');
    })

  1. 或者关系(||),将on改为orOn,代码示例如下:
$roomUuid = 1;
$chatInfo = DB::table('chat_info')
    ->where('chat_info.room_uuid', $roomUuid)
    ->leftJoin('user_rooms', function ($join) {
        $join->on('user_rooms.user_uuid', '=', 'chat_info.user_uuid')
            ->orOn('user_rooms.room_uuid', '=', 'chat_info.room_uuid');
    })

  1. 多条件查询,使用where,并使用use传递参数,代码示例如下:
$roomUuid = 1;
$chatInfo = DB::table('chat_info')
    ->where('chat_info.room_uuid', $roomUuid)
    ->leftJoin('user_rooms', function ($join) use ($chatInfo) {
        $join->on('user_rooms.user_uuid', '=', 'chat_info.user_uuid')
            ->where('user_rooms.room_uuid', '=', $chatInfo);
    })

原文地址:http://www.fidding.me/article/40

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/112309.html原文链接:https://javaforall.net

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • springcloud与dubbo深入对比

    springcloud与dubbo深入对比微服务架构是互联网很热门的话题,是互联网技术发展的必然结果。它提倡将单一应用程序划分成一组小的服务,服务之间互相协调、互相配合,为用户提供最终价值。虽然微服务架构没有公认的技术标准和规范或者草案,但业界已经有一些很有影响力的开源微服务架构框架提供了微服务的关键思路,例如Dubbo和SpringCloud。各大互联网公司也有自研的微服务框架,但其模式都与这二者相差不大。微服务主要的优势降低复…

    2022年5月10日
    43
  • LoadRunner11的安装与激活成功教程「建议收藏」

    LoadRunner11的安装与激活成功教程「建议收藏」现在很多人都在用LoadRunner11,下面我就来说说自己下载和安装LR11的过程。一、安装1.先来下载LR11.建议大家都在正规网站下载,推荐一个网站http://bbs.51testing.com/thread-423695-1-1.html,直接将此网站复制到迅雷下载http://www.genilogix.com/downloads/loadrunner/loadrunner-11

    2022年7月22日
    14
  • RPM安装篇

    RPM安装篇从一般意义上说,软件包的安装其实是文件的拷贝,RPM安装软件包,也无外乎此。但RPM要更进一步、更聪明一些就需要多做些工作了。聪明的安装从一般意义上说,软件包的安装其实是文件的拷贝,即把软件所用的各个文件拷贝到特定目录。RPM安装软件包,无外乎此。但RPM要更进一步,更聪明一些。在安装前,它通常要执行以下操作:1.检查软件包的依赖(Dependency)RPM格式的软件包中可

    2022年5月6日
    44
  • echarts的grid属性详解

    echarts的grid属性详解grid配置项:图标离容器的距离show:是否显示直角坐标系网格———–值:true?falseleft:图表离容器左侧的距离—————–值:number?百分比top:图表离容器顶部的距离—————–值:number?百分比right:图表离容器右侧的距离—————值:number?百分比bottom:图表离容器底部的距离————值:number?百分比backgroundColor:网格背景色—

    2022年7月15日
    43
  • SpringBoot的定时任务

    SpringBoot的定时任务SpringBoot的定时任务

    2022年4月23日
    43
  • TCP长连接数据传输(同步方式)[通俗易懂]

    TCP长连接数据传输(同步方式)

    2022年2月13日
    55

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号