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 5.3新特性命名空间规则解析及高级功能
Mar 11 PHP
php的hash算法介绍
Feb 13 PHP
php去除数组中重复数据
Nov 18 PHP
php使用str_replace实现输入框回车替换br的方法
Nov 24 PHP
php给每个段落添加空格的方法
Mar 20 PHP
PHP用反撇号执行外部命令
Apr 14 PHP
PHP 7的一些引人注目的新特性简单介绍
Nov 08 PHP
分享五个PHP7性能优化提升技巧
Dec 07 PHP
php使用PDO事务配合表格读取大量数据插入操作实现方法
Feb 16 PHP
PHP实现多图上传和单图上传功能
May 17 PHP
php简单检测404页面的方法示例
Aug 23 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
GD输出汉字的函数的分析
2006/10/09 PHP
如何让CI框架支持service层
2014/10/29 PHP
php列出mysql表所有行和列的方法
2015/03/13 PHP
PHP中把对象转换为关联数组代码分享
2015/04/09 PHP
PHP输出一个等腰三角形的方法
2015/05/12 PHP
php 无限级分类 获取顶级分类ID
2016/03/13 PHP
PHP 接入支付宝即时到账功能
2016/09/18 PHP
PHP读MYSQL中文乱码的快速解决方法
2016/10/01 PHP
PHP实现多级分类生成树的方法示例
2017/02/07 PHP
PHP如何使用JWT做Api接口身份认证的实现
2020/02/03 PHP
JQuery防止退格键网页后退的实现代码
2012/03/23 Javascript
jquery showModelDialog的使用方法示例详解
2013/11/19 Javascript
jQuery 生成svg矢量二维码
2016/08/09 Javascript
Jquery on绑定的事件 触发多次实例代码
2016/12/08 Javascript
echarts饼图扇区添加点击事件的实例
2017/10/16 Javascript
在vue项目中集成graphql(vue-ApolloClient)
2018/09/08 Javascript
Openlayers实现地图全屏显示
2020/09/28 Javascript
解决ant Design中Select设置initialValue时的大坑
2020/10/29 Javascript
关于element的表单组件整理笔记
2021/02/05 Javascript
[03:01]完美世界DOTA2联赛PWL S2 集锦第二期
2020/12/03 DOTA
Python中字符串格式化str.format的详细介绍
2017/02/17 Python
对python抓取需要登录网站数据的方法详解
2018/05/21 Python
django多文件上传,form提交,多对多外键保存的实例
2019/08/06 Python
python 使用xlsxwriter循环向excel中插入数据和图片的操作
2021/01/01 Python
CSS3制作酷炫的条纹背景
2017/11/09 HTML / CSS
HTML5的标签的代码的简单介绍 HTML5标签的简介
2012/05/28 HTML / CSS
中邮全球便购:中国邮政速递物流
2017/03/04 全球购物
印度尼西亚最好的小工具在线商店:Erafone.com
2019/03/26 全球购物
.NET概念性的面试题
2012/02/29 面试题
洗发露广告词
2014/03/14 职场文书
揭牌仪式策划方案
2014/05/28 职场文书
大学生暑期社会实践证明范本
2014/10/24 职场文书
黑暗中的舞者观后感
2015/06/18 职场文书
读《教育心理学》心得体会
2016/01/22 职场文书
二年级作文之动物作文
2019/11/13 职场文书
MySQL 使用索引扫描进行排序
2021/06/20 MySQL