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 相关文章推荐
多文件上载系统完整版
Oct 09 PHP
php上传、管理照片示例
Oct 09 PHP
mysql+php分页类(已测)
Mar 31 PHP
php mysql 判断update之后是否更新了的方法
Jan 10 PHP
PHP中使用foreach和引用导致程序BUG的问题介绍
Sep 05 PHP
php计算年龄精准到年月日
Nov 17 PHP
PHP中array_keys和array_unique函数源码的分析
Feb 26 PHP
PHP简单字符串过滤方法示例
Sep 04 PHP
php结合ajax实现手机发红包的案例
Oct 13 PHP
浅析php中array_map和array_walk的使用对比
Nov 20 PHP
PHP利用二叉堆实现TopK-算法的方法详解
Apr 24 PHP
php+mysql开发的最简单在线题库(在线做题系统)完整案例
Mar 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
用PHP实现小型站点广告管理
2006/10/09 PHP
php过滤html中的其他网站链接的方法(域名白名单功能)
2014/04/24 PHP
php示例详解Constructor Prototype Pattern 原型模式
2015/10/15 PHP
静态html文件执行php语句的方法(推荐)
2016/11/21 PHP
javascript处理table表格的代码
2010/12/06 Javascript
疯狂Jquery第一天(Jquery学习笔记)
2012/05/11 Javascript
js计算字符串长度包含的中文是utf8格式
2013/10/15 Javascript
js如何判断用户是在PC端和还是移动端访问
2014/04/24 Javascript
JS中使用sort结合localeCompare实现中文排序实例
2014/07/23 Javascript
javascript实现表格排序 编辑 拖拽 缩放
2015/01/02 Javascript
Jquery 实现弹出层插件
2015/01/28 Javascript
JS对字符串编码的几种方式使用指南
2015/05/14 Javascript
JavaScript jQuery 中定义数组与操作及jquery数组操作
2015/12/18 Javascript
JavaScript 消息框效果【实现代码】
2016/04/27 Javascript
JS实现复制内容到剪贴板功能兼容所有浏览器(推荐)
2016/06/17 Javascript
手机Web APP如何实现分享多平台功能
2016/08/19 Javascript
BootStrap给table表格的每一行添加一个按钮事件
2017/09/07 Javascript
element-ui组件table实现自定义筛选功能的示例代码
2019/03/15 Javascript
Vue项目部署的实现(阿里云+Nginx代理+PM2)
2019/03/26 Javascript
VUE 实现复制内容到剪贴板的两种方法
2019/04/24 Javascript
webpack 代码分离优化快速指北
2019/05/18 Javascript
node学习笔记之读写文件与开启第一个web服务器操作示例
2019/05/29 Javascript
vue回到顶部监听滚动事件详解
2019/08/02 Javascript
Python列表list操作符实例分析【标准类型操作符、切片、连接字符、列表解析、重复操作等】
2017/07/24 Python
基于python select.select模块通信的实例讲解
2017/09/21 Python
Python中defaultdict与lambda表达式用法实例小结
2018/04/09 Python
解决django 新增加用户信息出现错误的问题
2019/07/28 Python
python并发编程 Process对象的其他属性方法join方法详解
2019/08/20 Python
Python实现字符串中某个字母的替代功能
2019/10/21 Python
用python3读取python2的pickle数据方式
2019/12/25 Python
django queryset相加和筛选教程
2020/05/18 Python
财务管理专业自荐书
2014/09/02 职场文书
销售人才自我评价范文
2014/09/27 职场文书
小学运动会报道稿
2015/07/22 职场文书
采购部2015年度工作总结
2015/07/24 职场文书
python实现对doc、txt、xls等文档的读写操作
2022/04/02 Python