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


相关推荐

  • rider 激活码【2021.10最新】

    (rider 激活码)最近有小伙伴私信我,问我这边有没有免费的intellijIdea的激活码,然后我将全栈君台教程分享给他了。激活成功之后他一直表示感谢,哈哈~https://javaforall.net/100143.htmlIntelliJ2021最新激活注册码,破解教程可免费永久激活,亲测有效,上面是详细链接哦~23LN…

    2022年3月29日
    68
  • 最全QQ盗号手法分析,全面防御QQ盗号[通俗易懂]

    最全QQ盗号手法分析,全面防御QQ盗号[通俗易懂]你的QQ是否被盗过号,或者你身边的朋友、同学是否有过被盗号的经历。如今的安全机制真的没有效吗?盗号真的这么简单吗?本期将彻底解决这一问题。本期是上一期的姊妹篇,建议先看上一期,这样对于攻击者的手法才有更好的理解:传送门常见的盗号手法1、诱导链接以及二维码  这种情况在QQ群里面见的多。通常是发送一些具有诱惑性的链接诱导你去点击。也可能会是一些二维码,如下图。为了做这期,能更好的了解其盗号的手段,我把凡是我看到的盗号链接都点了个遍,那些恶意二维码我也扫了个遍。这是我在了解其原理并做了相应的安全措施.

    2022年7月26日
    12
  • Java中containsKey()方法[通俗易懂]

    Java中containsKey()方法[通俗易懂]containsKey方法——判断是否包含指定的键名在HashMap中经常用到containsKey()来判断键(key)是否存在。HashMap中允许值对象(value)为null,并且没有个数限制,所以当get()方法的返回值为null时,可能有两种情况:一种是在HashMap中没有该键对象,另一种是该键对象没有映射任何值对象,即值对象为null。因此,在HashMap中不应该利用get()方法来判断是否存在某个键,而应该利用containsKey()方法来判断。例如:HashMap&l

    2022年6月22日
    41
  • get, getline, gets, getchar 用法「建议收藏」

    get, getline, gets, getchar 用法「建议收藏」1、cin  1、cin>>  用法1:最基本,也是最常用的用法,输入一个数字:  #include  usingnamespacestd;  main()  {  inta,b;  cin>>a>>b;  cout<

    2022年10月9日
    0
  • 6200 uboot测试版分析(四)

    6200 uboot测试版分析(四)

    2021年8月18日
    53
  • navicat激活码【注册码】

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

    2022年3月19日
    58

发表回复

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

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