laravel高级的Join语法详解以及使用Join多个条件


Posted in PHP onOctober 16, 2019

在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多个条件就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持三水点靠木。

PHP 相关文章推荐
如何使用PHP往windows中添加用户
Dec 06 PHP
PHP 网页过期时间的控制代码
Jun 29 PHP
php 读取文件乱码问题
Feb 20 PHP
php urlencode()与urldecode()函数字符编码原理详解
Dec 06 PHP
php文件怎么打开 如何执行php文件
Dec 21 PHP
php 模拟POST提交的2种方法详解
Jun 17 PHP
简单解析PHP程序的运行流程
Jun 23 PHP
php生成与读取excel文件
Oct 14 PHP
php基于闭包实现函数的自调用(递归)实例分析
Nov 11 PHP
PHP简单实现二维数组的矩阵转置操作示例
Nov 24 PHP
tp5框架无刷新分页实现方法分析
Sep 26 PHP
php更新cookie内容的详细方法
Sep 30 PHP
Laravel 连接(Join)示例
Oct 16 #PHP
Thinkphp 在api开发中异常返回依然是html的解决方式
Oct 16 #PHP
PHP 代码简洁之道(小结)
Oct 16 #PHP
解决tp5在nginx下修改配置访问的问题
Oct 16 #PHP
Laravel6.2中用于用户登录的新密码确认流程详解
Oct 16 #PHP
PHP实现15位身份证号转18位的方法分析
Oct 16 #PHP
laravel unique验证、确认密码confirmed验证以及密码修改验证的方法
Oct 16 #PHP
You might like
基于mysql的论坛(7)
2006/10/09 PHP
PHP中::、->、self、$this几种操作符的区别介绍
2013/04/24 PHP
ThinkPHP惯例配置文件详解
2014/07/14 PHP
日常整理PHP中简单的图形处理(经典)
2015/10/26 PHP
php数组遍历类与用法示例
2019/05/24 PHP
js select常用操作控制代码
2010/03/16 Javascript
Javascript添加监听与删除监听用法详解
2014/12/19 Javascript
jquery左右全屏大尺寸多图滑动效果代码分享
2015/08/28 Javascript
理解javascript模块化
2016/03/28 Javascript
Angular.js中ng-if、ng-show和ng-hide的区别介绍
2017/01/20 Javascript
深入浅析Nodejs的Http模块
2017/06/20 NodeJs
angular4 JavaScript内存溢出问题
2018/03/06 Javascript
QRCode.js二维码生成并能长按识别
2018/10/16 Javascript
jquery实现商品sku多属性选择功能(商品详情页)
2019/12/20 jQuery
Python编程实现双链表,栈,队列及二叉树的方法示例
2017/11/01 Python
Python使用smtp和pop简单收发邮件完整实例
2018/01/09 Python
python3.6+selenium实现操作Frame中的页面元素
2019/07/16 Python
python线程中的同步问题及解决方法
2019/08/29 Python
Linux下通过python获取本机ip方法示例
2019/09/06 Python
用Python去除图像的黑色或白色背景实例
2019/12/12 Python
在python中求分布函数相关的包实例
2020/04/15 Python
Pytorch使用PIL和Numpy将单张图片转为Pytorch张量方式
2020/05/25 Python
美国和加拿大计算机和电子产品购物网站:TigerDirect.com
2019/09/13 全球购物
为什么如下的代码int a=100,b=100;long int c=a * b;不能工作
2013/11/29 面试题
暑期实习鉴定
2013/12/16 职场文书
企业指导教师评语
2014/04/28 职场文书
人力资源管理专业求职信
2014/07/23 职场文书
大学生联谊活动策划书(光棍节)
2014/10/10 职场文书
预备党员2014年第四季度思想汇报范文
2014/10/25 职场文书
担保书范文
2015/01/20 职场文书
公证书格式
2015/01/23 职场文书
同学会邀请函模板
2015/01/30 职场文书
离婚案件上诉状
2015/05/23 职场文书
怎样写家长意见
2015/06/04 职场文书
2016年“6.26”禁毒宣传月系列活动总结
2016/04/05 职场文书
开发一个封装iframe的vue组件
2021/03/29 Vue.js