laravel中Join语法以及使用Join多个条件

admin3年前PHP教程32

在laravel中我们常常会使用join,leftjion和rightjoin进行连表查询,非常的方便,但是我今天遇到一个问题,就是链表查询需要on多个条件,即我要订单的id和发货人都一样,默认的join只支持单个查询,所以我下面总结两种方法:

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

原生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语法以及使用Join多个条件的文章就介绍到这了,更多相关laravel中Join语法内容请搜索以前的文章或继续浏览下面的相关文章希望大家以后多多支持!

免责声明:本文内容来自用户上传并发布,站点仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。请核实广告和内容真实性,谨慎使用。

相关文章

东莞高防服务器租用好不好主要看哪些

东莞高防服务器租用好不好主要看哪些?东莞高防服务器租用好不好,主要看以下几个方面:防护能力:高防服务器的防护能力是选择的重要指标之一,需要具备对各种攻击手段的防范能力,如DDoS攻击、CC攻击、SQL...

分析PHP的垃圾回收机制

如果用过C语言,那么申请内存的方式是malloc或者是calloc,然后你用完这个内存后,一定不要忘了用free函数去释放掉,这就是传说中手动垃圾回收,一般都是扫地神僧用这种方式。很多高层次语言中,你...

PHP使用QR Code生成二维码实例

使用PHP QR Code生成二维码HP QR Code是一个PHP二维码生成类库,利用它可以轻松生成二维码,官网提供了下载和多个演示demo,查看地址:phpqrcode.sourceforge/下...

马来西亚服务器为什么比美国服务器贵

马来西亚服务器为什么比美国服务器贵?有几个可能的原因导致马来西亚服务器比美国服务器贵:市场需求:马来西亚可能没有像美国那么多的服务器提供商和数据中心。由于市场竞争较少,价格可能会相对较高。劳动力成本:...

PHP 弱引用的相关总结

目录什么是弱引用WeakReference注意测试代码:之前的文章中,我们已经学习过引用和引用传值相关的知识。我们知道,PHP 中没有纯引用(指针),不管是对象,还是用引用符号 & 赋值的变量...

GPU服务器的使用案例香港gpu服务器租用费用

GPU服务器的使用案例?1、深度学习的应用案例深度学习模仿的是我们人类大脑运行的方式——从经验中学习,它的最终目标是让机器能够像人一样具有分析学习能力,能够识别文字、图像和声音等数据。深度学习的实际案...