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实现的获取URL信息的类
Jan 02 PHP
javascript some()函数用法详解
Nov 13 PHP
PHP使用pcntl_fork实现多进程下载图片的方法
Dec 16 PHP
网站防止被刷票的一些思路与方法
Jan 08 PHP
php判断两个浮点数是否相等的方法
Mar 14 PHP
php实现过滤字符串中的中文和数字实例
Jul 29 PHP
PHP的Yii框架中使用数据库的配置和SQL操作实例教程
Mar 17 PHP
PHP实现的多文件上传类及用法示例
May 06 PHP
PHP数组式访问接口ArrayAccess用法分析
Dec 28 PHP
PHP+MySQL实现输入页码跳转到指定页面功能示例
Jun 01 PHP
PHP的mysqli_stat()函数讲解
Jan 23 PHP
PHP实现一个按钮点击上传多个图片操作示例
Jan 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
PHP 使用MySQL管理Session的回调函数详解
2013/06/21 PHP
PHP实现WebService的简单示例和实现步骤
2015/03/27 PHP
Laravel 5框架学习之环境与配置
2015/04/08 PHP
PHP 生成微信红包代码简单
2016/03/25 PHP
PHP模板引擎Smarty中变量的使用方法示例
2016/04/11 PHP
PHP的swoole扩展安装方法详细教程
2016/05/18 PHP
php设计模式之观察者模式实例详解【星际争霸游戏案例】
2020/03/30 PHP
extjs 初始化checkboxgroup值的代码
2011/09/21 Javascript
javascript之querySelector和querySelectorAll使用说明
2011/10/09 Javascript
JavaScript插入动态样式实现代码
2012/02/22 Javascript
JQuery触发radio或checkbox的change事件
2012/12/18 Javascript
jquery validate添加自定义验证规则(验证邮箱 邮政编码)
2013/12/04 Javascript
jQuery处理图片加载失败的常用方法
2015/06/08 Javascript
js数组常见操作及数组与字符串相互转化实例详解
2015/11/10 Javascript
win7下安装配置node.js+express开发环境
2015/12/06 Javascript
JavaScript简单获取系统当前时间完整示例
2016/08/02 Javascript
JavaScript实现的CRC32函数示例
2016/11/23 Javascript
javascript判断元素存在和判断元素存在于实时的dom中的方法
2017/01/17 Javascript
d3.js中冷门却实用的内置函数总结
2017/02/04 Javascript
JavaScript ES6箭头函数使用指南
2018/12/30 Javascript
JS求1到任意数之间的所有质数的方法详解
2019/05/20 Javascript
一篇文章介绍redux、react-redux、redux-saga总结
2019/05/23 Javascript
浅谈Vue.js之初始化el以及数据的绑定说明
2019/11/14 Javascript
解决Vue的项目使用Element ui 走马灯无法实现的问题
2020/08/03 Javascript
速记Python布尔值
2017/11/09 Python
全面了解Nginx, WSGI, Flask之间的关系
2018/01/09 Python
pycharm 配置远程解释器的方法
2018/10/28 Python
解决在pycharm中显示额外的 figure 窗口问题
2019/01/15 Python
python向字符串中添加元素的实例方法
2019/06/28 Python
关于tensorflow softmax函数用法解析
2020/06/30 Python
CSS3圆角和渐变2种常用功能详解
2016/01/06 HTML / CSS
职业教育毕业生求职信
2013/11/09 职场文书
班组长的岗位职责
2013/12/09 职场文书
高中生学习的自我评价
2013/12/14 职场文书
使用Navicat Premium工具将oracle数据库迁移到MySQL
2021/05/27 Oracle
教你用Python+selenium搭建自动化测试环境
2021/06/18 Python