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 相关文章推荐
使用PHPMYADMIN操作mysql数据库添加新用户和数据库的方法
Apr 02 PHP
php 阴历-农历-转换类代码
Jan 16 PHP
PHP引用符&的用法详细解析
Aug 22 PHP
php利用单例模式实现日志处理类库
Feb 10 PHP
PHP和javascript常用正则表达式及用法实例
Jul 01 PHP
PHP面向对象程序设计之接口用法
Aug 20 PHP
php 伪造ip以及url来路信息方法汇总
Nov 25 PHP
php生成二维码
Aug 10 PHP
php socket通信(tcp/udp)实例分析
Feb 14 PHP
php操作access数据库的方法详解
Feb 22 PHP
PHP实现的防止跨站和xss攻击代码【来自阿里云】
Jan 29 PHP
php-fpm重启导致的程序执行中断问题详解
Apr 29 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验证复选框有效性的示例
2013/11/13 PHP
深入解析PHP的Laravel框架中的event事件操作
2016/03/21 PHP
PHP实现自动识别原编码并对字符串进行编码转换的方法
2016/07/13 PHP
javascript实现的基于金山词霸网络翻译的代码
2010/01/15 Javascript
离开页面时检测表单元素是否被修改,提示保存的js代码
2010/08/25 Javascript
jQuery Ajax 实例全解析
2011/04/20 Javascript
用js的for循环获取radio选中的值
2013/10/21 Javascript
ParseInt函数参数设置介绍
2014/01/02 Javascript
Javascript 浮点运算精度问题分析与解决
2014/03/26 Javascript
js 动态添加元素(div、li、img等)及设置属性的方法
2016/07/19 Javascript
JavaScript表单焦点自动切换代码
2016/07/24 Javascript
BootStrap实现轮播图效果(收藏)
2016/12/30 Javascript
详谈JavaScript的闭包及应用
2017/01/17 Javascript
js将当前时间格式化为 年-月-日 时:分:秒的实现代码
2018/01/20 Javascript
JavaScript实现求最大公共子串的方法
2018/02/03 Javascript
vue 根据数组中某一项的值进行排序的方法
2018/08/30 Javascript
vue+express+jwt持久化登录的方法
2019/06/14 Javascript
[53:50]CHAOS vs Mineski 2019国际邀请赛小组赛 BO2 第一场 8.16
2019/08/18 DOTA
[54:15]DOTA2-DPC中国联赛 正赛 DLG vs Dragon BO3 第二场2月1日
2021/03/11 DOTA
python中matplotlib实现最小二乘法拟合的过程详解
2017/07/11 Python
使用python实现http及ftp服务进行数据传输的方法
2018/10/26 Python
python在openstreetmap地图上绘制路线图的实现
2019/07/11 Python
python实现的发邮件功能示例
2019/09/11 Python
Pycharm+Python+PyQt5使用详解
2019/09/25 Python
瑜伽灵感珠宝:Satya Jewelry
2018/01/06 全球购物
巴西最好的男鞋:Rafarillo
2018/05/25 全球购物
给老婆的婚前保证书
2014/02/01 职场文书
个人委托书格式
2014/04/04 职场文书
数据保密承诺书
2014/06/03 职场文书
2014年初一班主任工作总结
2014/11/08 职场文书
2014年银行员工工作总结
2014/11/12 职场文书
2016年公司中秋节致辞
2015/11/26 职场文书
《将心比心》教学反思
2016/02/23 职场文书
评测 | 大屏显示带收音机的高端音箱,JBL TUNE2便携式插卡音箱实测
2021/04/24 无线电
Js类的构建与继承案例详解
2021/09/15 Javascript
MySql数据库触发器使用教程
2022/06/01 MySQL