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 无限级缓存的类的扩展
Mar 16 PHP
10 个经典PHP函数
Oct 17 PHP
CI框架学习笔记(二) -入口文件index.php
Oct 27 PHP
Symfony页面的基本创建实例详解
Jan 26 PHP
PHP合并数组+号和array_merge的区别
Jun 25 PHP
ThinkPHP2.x防范XSS跨站攻击的方法
Sep 25 PHP
php微信公众号开发之快递查询
Oct 20 PHP
PHP基于session.upload_progress 实现文件上传进度显示功能详解
Aug 09 PHP
php服务器的系统详解
Oct 12 PHP
Laravel定时任务的每秒执行代码
Oct 22 PHP
Thinkphp 框架配置操作之动态配置、扩展配置及批量配置实例分析
May 15 PHP
PHP中SESSION过期设置
Mar 09 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/09/05 PHP
laravel5.5添加echarts实现画图功能的方法
2019/10/09 PHP
网上应用的一个不错common.js脚本
2007/08/08 Javascript
Jquery Ajax学习实例4 向WebService发出请求,返回实体对象的异步调用
2010/03/16 Javascript
javascript从image转换为base64位编码的String
2014/07/29 Javascript
js实现DOM走马灯特效的方法
2015/01/21 Javascript
jQuery对JSON数据进行排序输出的方法
2015/06/24 Javascript
Javascript的表单验证-揭开正则表达式的面纱
2016/03/18 Javascript
最简单的tab切换实例代码
2016/05/13 Javascript
jQuery使用getJSON方法获取json数据完整示例
2016/09/13 Javascript
vue.js利用defineProperty实现数据的双向绑定
2017/04/28 Javascript
vue父组件通过props如何向子组件传递方法详解
2017/08/16 Javascript
Bootstrap4如何定制自己的颜色和风格
2018/02/26 Javascript
React 组件转 Vue 组件的命令写法
2018/02/28 Javascript
vue-router的使用方法及含参数的配置方法
2018/11/13 Javascript
JS使用数组实现的队列功能示例
2019/03/04 Javascript
原生js+ajax分页组件
2020/01/30 Javascript
vue集成openlayers加载geojson并实现点击弹窗教程
2020/09/24 Javascript
Numpy数组转置的两种实现方法
2018/04/17 Python
Python rstrip()方法实例详解
2018/11/11 Python
AUC计算方法与Python实现代码
2020/02/28 Python
python 牛顿法实现逻辑回归(Logistic Regression)
2020/10/15 Python
Html5新标签解释及用法
2012/02/17 HTML / CSS
HTML5 Canvas 实现K线图的示例代码
2019/12/23 HTML / CSS
html5实现滑块功能之type="range"属性
2020/02/18 HTML / CSS
Amara美国站:英国高端家居礼品网站,世界各地的奢侈家具品牌
2017/07/26 全球购物
美国电子产品主要品牌的授权在线零售商:DataVision
2019/03/23 全球购物
护士自我评价范文
2014/01/25 职场文书
大学新闻系应届生求职信
2014/06/02 职场文书
实训报告范文大全
2014/11/04 职场文书
2015年清明节扫墓演讲稿
2015/03/18 职场文书
2015年党员岗位承诺书
2015/04/27 职场文书
使用golang编写一个并发工作队列
2021/05/08 Golang
Python matplotlib安装以及实现简单曲线的绘制
2022/04/26 Python
详解Mysql事务并发(脏读、不可重复读、幻读)
2022/04/29 MySQL
Win10开机修复磁盘错误怎么跳过?Win10关闭开机磁盘检查的方法
2022/09/23 数码科技