您现在的位置是:群英 > 开发技术 > PHP语言
Laravel中join on多个条件查询怎样实现?
Admin发表于 2022-01-10 18:36:231630 次浏览

    Laravel中join on多个条件查询怎样实现?在laravel中我们常常会使用join,leftjion和rightjoin进行连表查询。因为默认的join只支持单个查询,当我们链表查询需要on多个条件的时候,应该怎样实现呢?

    一、使用原是表达式(不推荐)

    原生SQL中我们可以通过如下方法进行

select * from `orders` left join `users` on
 `orders`.`usename`=`users`.`usename` and `orders`.`platform`=`users`.`platform` where `orders`.`order_status` = 2

    那么结合laravel,我们可以所以

DB::select('select * from `orders` left join `users` on
 `orders`.`usename`=`users`.`usename` and `orders`.`platform`=`users`.`platform` 
where `orders`.`order_status` = :id', ['id' => 1]);

    二、使用高级的Join语法(推荐使用)

    我们只需要所以如下代码即可完成我们的Join多个条件

DB::table('users')
 ->join('contacts', function ($join) {
  $join->on('users.id', '=','contacts.user_id')->on('users.usename', '=','contacts.usename');
  })
 ->get();

    如果你想要了解更多,我们可以看一下文档中的描述:

    让我们以传入一个闭包当作 join 方法的第二参数来作为开始。此闭包会接收 JoinClause 对象,让你可以在 join 子句上指定约束:

DB::table('users')
 ->join('contacts', function ($join) {
  $join->on('users.id', '=','contacts.user_id')->orOn(...);
  })
 ->get();

    若你想要在连接中使用「where」风格的子句,则可以在连接中使用 where 和 orWhere 方法。这些方法会比较字段和一个值,来代替两个字段的比较:

DB::table('users')
  ->join('contacts', function ($join) {
   $join->on('users.id', '=', 'contacts.user_id')
     ->where('contacts.user_id', '>', 5);
  })
  ->get();

    关于Laravel中join on多个条件查询的实现就介绍到这,本文代码仅供参考,希望大家阅读完这篇文章能有所收获。最后,想要了解更多Laravel中join查询的内容,大家可以关注其它的相关文章。

文本转载自脚本之家

免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:mmqy2019@163.com进行举报,并提供相关证据,查实之后,将立刻删除涉嫌侵权内容。

相关信息推荐
2021-12-23 19:15:34 
摘要:这篇文章我们来了解用C语言怎样实现十字链表的内容,一些朋友可能对于十字链表是什么也不是很了解,对此下文会介绍十字链表及十字链表的实现,但是本文示例需要读者有一定代码基础会更好理解,最好是能了解指针,链表,数组等这些诶,那么接下来就跟随小编来一起学习一下吧!
2022-05-31 17:46:55 
摘要:解决java的ajax提交返回值中文乱码的方法:1、在RequestMapping的并发配置中加代码【products=text/html;charset=UTF-8】;2、在文件中【mvc:annotation-driven】中添加代码。
2022-07-20 17:11:46 
摘要:结构体类型可以用来保存不同类型的数据,也可以通过方法的形式来声明它的行为。本文将介绍go语言中的结构体和方法,以及“继承”的实现方法
云活动
推荐内容
热门关键词
热门信息
群英网络助力开启安全的云计算之旅
立即注册,领取新人大礼包
  • 联系我们
  • 24小时售后:4006784567
  • 24小时TEL :0668-2555666
  • 售前咨询TEL:400-678-4567

  • 官方微信

    官方微信
Copyright  ©  QY  Network  Company  Ltd. All  Rights  Reserved. 2003-2019  群英网络  版权所有   茂名市群英网络有限公司
增值电信经营许可证 : B1.B2-20140078   粤ICP备09006778号
免费拨打  400-678-4567
免费拨打  400-678-4567 免费拨打 400-678-4567 或 0668-2555555
微信公众号
返回顶部
返回顶部 返回顶部