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默认安装产生系统漏洞
Oct 09 PHP
用PHP和ACCESS写聊天室(九)
Oct 09 PHP
火车采集器 免费版使出收费版本功能实现原理
Sep 17 PHP
PHP 抓取新浪读书频道的小说并生成txt电子书的代码
Dec 18 PHP
PHP curl_setopt()函数实例代码与参数分析
Jun 02 PHP
修改apache配置文件去除thinkphp url中的index.php
Jan 17 PHP
Windows中使用计划任务自动执行PHP程序实例
May 09 PHP
php使用文本统计访问量的方法
May 12 PHP
CI框架支持$_GET的两种实现方法
May 18 PHP
PHP的mysqli_stat()函数讲解
Jan 23 PHP
laravel Validator ajax返回错误信息的方法
Sep 29 PHP
php提高脚本性能的4个技巧
Aug 18 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
改造一台复古桌面收音机
2021/03/02 无线电
浅谈PHP语法(1)
2006/10/09 PHP
一个ubbcode的函数,速度很快.
2006/10/09 PHP
php插入中文到sqlserver 2008里出现乱码的解决办法分享
2012/07/19 PHP
PHP实现文件上传和多文件上传
2015/12/24 PHP
Laravel手动分页实现方法详解
2016/10/09 PHP
Laravel使用scout集成elasticsearch做全文搜索的实现方法
2018/11/30 PHP
php分享朋友圈的实现代码
2019/02/18 PHP
js 跨域和ajax 跨域问题小结
2009/07/01 Javascript
十个迅速提升JQuery性能让你的JQuery跑得更快
2012/12/10 Javascript
ComboBox 和 DateField 在IE下消失的解决方法
2013/08/30 Javascript
Javascript获取当前时间函数和时间操作小结
2014/10/01 Javascript
使用js画图之圆、弧、扇形
2015/01/12 Javascript
JavaScript实现的简单拖拽效果
2015/06/01 Javascript
JavaScript的jQuery库中ready方法的学习教程
2015/08/14 Javascript
JavaScript判断FileUpload控件上传文件类型
2015/09/28 Javascript
最好用的Bootstrap fileinput.js文件上传组件
2016/12/12 Javascript
Jquery Easyui搜索框组件SearchBox使用详解(19)
2016/12/17 Javascript
JScript实现地址选择功能
2017/08/15 Javascript
JavaScript中Dom操作实例详解
2019/07/08 Javascript
Vue实现简单计算器
2021/01/20 Vue.js
typescript编写微信小程序创建项目的方法
2021/01/29 Javascript
[01:57]2018年度DOTA2最具潜力解说-完美盛典
2018/12/16 DOTA
[47:10]完美世界DOTA2联赛PWL S3 LBZS vs Rebirth 第二场 12.16
2020/12/18 DOTA
从零开始学Python第八周:详解网络编程基础(socket)
2016/12/14 Python
简单谈谈Python中的元祖(Tuple)和字典(Dict)
2017/04/21 Python
Python 实现选择排序的算法步骤
2018/04/22 Python
Python八大常见排序算法定义、实现及时间消耗效率分析
2018/04/27 Python
Pycharm 创建 Django admin 用户名和密码的实例
2018/05/30 Python
Python正则表达式和元字符详解
2018/11/29 Python
Python转换字典成为对象,可以用"."方式访问对象属性实例
2020/05/11 Python
Pycharm安装并配置jupyter notebook的实现
2020/05/18 Python
keras中模型训练class_weight,sample_weight区别说明
2020/05/23 Python
自我鉴定模板
2013/10/29 职场文书
团工委书记自荐书范文
2013/12/17 职场文书
2015年元旦文艺晚会总结(学院)
2014/11/28 职场文书