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伪造referer突破网盘禁止外连的代码
Jun 15 PHP
PHP Parse Error: syntax error, unexpected $end 错误的解决办法
Jun 05 PHP
php代码中使用换行及(\n或\r\n和br)的应用
Feb 02 PHP
深入解析php之sphinx
May 15 PHP
解析如何在PHP下载文件名中解决乱码的问题
Jun 20 PHP
php指定函数参数默认值示例代码
Dec 04 PHP
php防止sql注入简单分析
Mar 18 PHP
PHP加密解密字符串汇总
Apr 26 PHP
PHP 常用时间函数资料整理
Oct 22 PHP
php实现不通过扩展名准确判断文件类型的方法【finfo_file方法与二进制流】
Apr 18 PHP
php实现微信模板消息推送
Mar 30 PHP
PDO::lastInsertId讲解
Jan 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
蝙蝠侠:侠影之谜
2020/03/04 欧美动漫
PHP新手上路(四)
2006/10/09 PHP
PHP下获取上个月、下个月、本月的日期(strtotime,date)
2014/02/02 PHP
thinkPHP5框架实现基于ajax的分页功能示例
2018/06/12 PHP
laravel框架创建授权策略实例分析
2019/11/22 PHP
JXTree对象,读取外部xml文件数据,生成树的函数
2007/04/02 Javascript
11款新鲜的jQuery插件[附所有demo下载]
2011/01/24 Javascript
JavaScript调用客户端的可执行文件(示例代码)
2013/11/28 Javascript
检查输入的是否是数字使用keyCode配合onkeypress事件
2014/01/23 Javascript
JavaScript定义类和对象的方法
2014/11/26 Javascript
JS中的hasOwnProperty()、propertyIsEnumerable()和isPrototypeOf()
2016/08/11 Javascript
js实现百度地图定位于地址逆解析,显示自己当前的地理位置
2016/12/08 Javascript
使用veloticy-ui生成文字动画效果
2018/02/08 Javascript
nodejs实现套接字服务功能详解
2018/06/21 NodeJs
Vue.js实现可编辑的表格
2019/12/11 Javascript
实用的 vue tags 创建缓存导航的过程实现
2020/12/03 Vue.js
Python中用于去除空格的三个函数的使用小结
2015/04/07 Python
Python字符串详细介绍
2015/05/09 Python
深入源码解析Python中的对象与类型
2015/12/11 Python
python中装饰器级连的使用方法示例
2017/09/29 Python
python利用正则表达式排除集合中字符的功能示例
2017/10/10 Python
Python高级编程之消息队列(Queue)与进程池(Pool)实例详解
2019/11/01 Python
Python 解决OPEN读文件报错 ,路径以及r的问题
2019/12/19 Python
使用 pytorch 创建神经网络拟合sin函数的实现
2020/02/24 Python
Python Map 函数的使用
2020/08/28 Python
matplotlib常见函数之plt.rcParams、matshow的使用(坐标轴设置)
2021/01/05 Python
纯CSS改变webkit内核浏览器的滚动条样式
2014/04/17 HTML / CSS
全球最大的户外用品零售商之一:The House
2018/06/12 全球购物
俄罗斯建筑和装饰材料在线商店:Stroilandia
2020/07/25 全球购物
客服服务心得体会
2013/12/30 职场文书
广告学专业求职信
2014/06/19 职场文书
动物科学专业求职信
2014/07/27 职场文书
长城英文导游词
2015/01/30 职场文书
自我推荐信怎么写
2015/03/24 职场文书
HR必备:销售经理聘用合同范本
2019/08/21 职场文书
苹果macOS 13开发者预览版Beta 8发布 正式版10月发布
2022/09/23 数码科技