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的分页功能
Mar 21 PHP
php win下Socket方式发邮件类
Aug 21 PHP
php使用百度天气接口示例
Apr 22 PHP
PHP错误Parse error: syntax error, unexpected end of file in test.php on line 12解决方法
Jun 23 PHP
php中in_array函数用法探究
Nov 25 PHP
在WordPress的后台中添加顶级菜单和子菜单的函数详解
Jan 11 PHP
PHP判断FORM表单或URL参数来的数据是否为整数的方法
Mar 25 PHP
PHP给文字内容中的关键字进行套红处理
Apr 12 PHP
由php中字符offset特征造成的绕过漏洞详解
Jul 07 PHP
laravel自定义分页效果
Jul 23 PHP
PHP常用函数之根据生日计算年龄功能示例
Oct 21 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
zend framework配置操作数据库实例分析
2012/12/06 PHP
PHP中的session安全吗?
2016/01/22 PHP
PHP后台实现微信小程序登录
2018/08/03 PHP
jQuery如何取id有.的值一般的方法是取不到的
2014/04/18 Javascript
jQuery实现简单的列表式导航菜单效果代码
2015/08/31 Javascript
详解原生JavaScript实现jQuery中AJAX处理的方法
2016/05/10 Javascript
Bootstrap3学习笔记(二)之排版
2016/05/20 Javascript
实现easyui的datagrid导出为excel的示例代码
2016/11/10 Javascript
Bootstrap页面缩小变形的快速解决办法
2017/02/03 Javascript
JavaScript拖动层Div代码
2017/03/01 Javascript
Vue 2.x教程之基础API
2017/03/06 Javascript
JavaScript用200行代码制作打飞机小游戏实例
2017/06/21 Javascript
微信小程序实现的绘制table表格功能示例
2019/04/26 Javascript
微信小程序图片左右摆动效果详解
2019/07/13 Javascript
Vuex的API文档说明详解
2020/02/05 Javascript
JavaScript ES6 Class类实现原理详解
2020/05/08 Javascript
ant design vue datepicker日期选择器中文化操作
2020/10/28 Javascript
node使用async_hooks模块进行请求追踪
2021/01/28 Javascript
[02:00]DOTA2英雄COSPLAY闹市街头巡游助威2015国际邀请赛
2015/08/02 DOTA
python实现unicode转中文及转换默认编码的方法
2017/04/29 Python
python pandas dataframe 按列或者按行合并的方法
2018/04/12 Python
Python读取txt内容写入xls格式excel中的方法
2018/10/11 Python
TensorFlow卷积神经网络之使用训练好的模型识别猫狗图片
2019/03/14 Python
Python 学习教程之networkx
2019/04/15 Python
解决Python正则表达式匹配反斜杠''\''问题
2019/07/17 Python
详解pandas中MultiIndex和对象实际索引不一致问题
2019/07/23 Python
Python 迭代,for...in遍历,迭代原理与应用示例
2019/10/12 Python
python3 中使用urllib问题以及urllib详解
2020/08/03 Python
StubHub美国:购买或出售您的门票
2019/07/09 全球购物
会计实习生自我鉴定
2013/12/12 职场文书
巾帼建功标兵事迹材料
2014/05/11 职场文书
团结演讲稿范文
2014/05/23 职场文书
出纳年终工作总结2014
2014/12/05 职场文书
2014年底工作总结
2014/12/15 职场文书
绿里奇迹观后感
2015/06/15 职场文书
golang通过递归遍历生成树状结构的操作
2021/04/28 Golang