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)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • java实现深拷贝和浅拷贝_深复制与浅复制的区别

    java实现深拷贝和浅拷贝_深复制与浅复制的区别clone顾名思义就是复制,在Java语言中,clone方法被对象调用,所以会复制对象。所谓的复制对象,首先要分配一个和源对象同样大小的空间,在这个空间中创建一个新的对象。那么在java语言中,有几种方式可以创建对象呢?1.使用new操作符创建一个对象2.使用clone方法复制一个对象那么这两种方式有什么相同和不同呢?new操作符的本意是分配内存。程序执行

    2022年10月1日
    0
  • 2021python激活码【在线注册码/序列号/破解码】[通俗易懂]

    2021python激活码【在线注册码/序列号/破解码】,https://javaforall.net/100143.html。详细ieda激活码不妨到全栈程序员必看教程网一起来了解一下吧!

    2022年3月18日
    52
  • 快速熟悉 PyQt5 与 Eric6 的极速 GUI 开发

    完美安装Anaconda3+PyQt5+Eric6一文对PyQt5与Eric6的安装做了详细的记录。这次将结合使用PyQt5和Eric6以实例的方式向大家展示PyQt5与Eric6的极速GUI开发,同时也可以让大家对PyQt5与Eric6先混个脸熟。用Eric6与PyQt5结合,非常方便的实现界面与逻辑分离,满足python的极速GUI编程,你只需要关注程序的逻辑实现,而不需要在

    2022年4月8日
    65
  • docker端口映射失效解决方法[通俗易懂]

    docker端口映射失效解决方法[通俗易懂]docker端口映射失效解决方法

    2022年10月17日
    0
  • Landsat 9 数据详细介绍

    Landsat 9 数据详细介绍1.基本情况Landsat9号是Landsat系列中最新的一颗卫星,计划于2020年12月在加利福利亚范登堡空军基地加利福尼亚由AtlasV401火箭搭载进行发射,实际于于2021年9月27日发射,并已经开始采集第一批数据,2021年10月31日获取到遥感数据。Landsat9是继续Landsat系列对地球表面观测不可替代的记录。为了减少建造时间和观测缺口的风险,Landsat9在很大程度上复制了它的前身Landsat8。来源:原文链接…

    2022年7月23日
    41
  • 项目与数据库时差8小时解决,设置SpringBoot的时区

    项目与数据库时差8小时解决,设置SpringBoot的时区Componentpub PostConstruc TimeZone setDefault TimeZone getTimeZone UTC TimeZone setDefault TimeZone getTimeZone Asia Shanghai TimeZone setDefault Time

    2025年6月8日
    0

发表回复

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

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