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抽象工厂模式(Elgg)
Mar 21 PHP
PHP中调用ASP.NET的WebService的代码
Apr 22 PHP
php上传图片存入数据库示例分享
Mar 11 PHP
php中使用key,value,current,next和prev函数遍历数组的方法
Mar 17 PHP
解决php的“It is not safe to rely on the system’s timezone settings”问题
Oct 08 PHP
基于php实现随机合并数组并排序(原排序)
Nov 26 PHP
PHP开发实现微信退款功能示例
Nov 25 PHP
微信推送功能实现方式图文详解
Jul 12 PHP
php生成微信红包数组的方法
Sep 05 PHP
laravel 解决groupBy时出现的错误 isn't in Group By问题
Oct 17 PHP
tp5框架前台无限极导航菜单类实现方法分析
Mar 29 PHP
PHP开发API接口签名生成及验证操作示例
May 27 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
十天学会php之第六天
2006/10/09 PHP
第四章 php数学运算
2011/12/30 PHP
form表单只提交数据而不进行页面跳转的解决方案
2013/09/18 Javascript
javascript中的作用域和上下文使用简要概述
2013/12/05 Javascript
javascript基于HTML5 canvas制作画箭头组件
2014/06/25 Javascript
JQuery做的一个简单的点灯游戏分享
2014/07/16 Javascript
javascript三种代码注释方法
2016/06/02 Javascript
AngularJS bootstrap启动详解及实例代码
2016/09/14 Javascript
AngularJS表单基本操作
2017/01/09 Javascript
bootstrap滚动监控器使用方法解析
2017/01/13 Javascript
JS使用setInterval实现的简单计时器功能示例
2018/04/19 Javascript
基于JS实现一个随机生成验证码功能
2019/05/29 Javascript
JavaScript实现背景自动切换小案例
2019/09/27 Javascript
JavaScript获取页面元素的常用方法详解
2019/09/28 Javascript
JS前端广告拦截实现原理解析
2020/02/17 Javascript
详解如何在vue+element-ui的项目中封装dialog组件
2020/12/11 Vue.js
vue3.0中友好使用antdv示例详解
2021/01/05 Vue.js
pandas把dataframe转成Series,改变列中值的类型方法
2018/04/10 Python
Python多继承顺序实例分析
2018/05/26 Python
python实现输入数字的连续加减方法
2018/06/22 Python
ansible动态Inventory主机清单配置遇到的坑
2020/01/19 Python
python框架Django实战商城项目之工程搭建过程图文详解
2020/03/09 Python
使用OpenCV实现人脸图像卡通化的示例代码
2021/01/15 Python
iPhoneX安全区域(Safe Area)底部小黑条在微信小程序和H5的屏幕适配
2020/04/08 HTML / CSS
几个SQL的面试题
2014/03/08 面试题
大学生创业计划书的范文
2014/01/07 职场文书
关于毕业的广播稿
2014/01/10 职场文书
爸爸的花儿落了教学反思
2014/02/20 职场文书
办理房产过户的委托书
2014/09/14 职场文书
学生抄作业检讨书(2篇)
2014/10/17 职场文书
2014年污水处理厂工作总结
2014/12/19 职场文书
七一表彰大会简报
2015/07/20 职场文书
简历上的自我评价,该怎么写呢?
2019/06/13 职场文书
python实现简单的聊天小程序
2021/07/07 Python
sql注入教程之类型以及提交注入
2021/08/02 MySQL
CSS中实现动画效果-附案例
2022/02/28 HTML / CSS