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 设计模式之 单例模式
Dec 19 PHP
PHP技术开发技巧分享
Mar 23 PHP
php 中文字符入库或显示乱码问题的解决方法
Apr 12 PHP
php与mysql建立连接并执行SQL语句的代码
Jul 04 PHP
供参考的 php 学习提高路线分享
Oct 23 PHP
php&mysql 日期操作小记
Feb 27 PHP
PHP5权威编程阅读学习笔记 附电子书下载
Jul 05 PHP
基于php常用函数总结(数组,字符串,时间,文件操作)
Jun 27 PHP
CI框架源码解读之URI.php中_fetch_uri_string()函数用法分析
May 18 PHP
PHP正则删除HTML代码中宽高样式的方法
Jun 12 PHP
phpinfo的知识点总结
Oct 10 PHP
swoole锁的机制代码实例讲解
Mar 04 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/01 PHP
php判断类是否存在函数class_exists用法分析
2014/11/14 PHP
Yii中CGridView实现批量删除的方法
2015/12/28 PHP
php实现购物车功能(上)
2020/07/23 PHP
浅谈PHP的数据库接口和技术
2016/12/09 PHP
JQuery 文本框回车跳到下一个文本框示例代码
2013/08/30 Javascript
js判断url是否有效的两种方法
2014/03/04 Javascript
JavaScript使用DeviceOne开发实战(二) 生成调试安装包
2015/12/01 Javascript
javascript自定义滚动条实现代码
2020/04/20 Javascript
Boostrap模态窗口的学习小结
2016/03/28 Javascript
jQuery使用eraser.js插件实现擦除、刮刮卡效果的方法【附eraser.js下载】
2017/04/28 jQuery
nodejs 最新版安装npm 的使用详解
2018/01/18 NodeJs
监控Nodejs的性能实例代码
2019/07/02 NodeJs
微信小程序之 catalog 切换实现解析
2019/09/12 Javascript
Python实现多行注释的另类方法
2014/08/22 Python
python实现的简单RPG游戏流程实例
2015/06/28 Python
Python 使用SMTP发送邮件的代码小结
2016/09/21 Python
详解python之多进程和进程池(Processing库)
2017/06/09 Python
Django自定义分页效果
2017/06/27 Python
Python中支持向量机SVM的使用方法详解
2017/12/26 Python
Ubuntu下使用Python实现游戏制作中的切分图片功能
2018/03/30 Python
Python:__eq__和__str__函数的使用示例
2020/09/26 Python
Python常用断言函数实例汇总
2020/11/30 Python
ellesse美国官方商店:意大利高级运动服品牌
2019/10/29 全球购物
PHP开发工程师面试问题集锦
2012/11/01 面试题
网络公司美工设计工作个人的自我评价
2013/11/03 职场文书
优秀班集体获奖感言
2014/02/03 职场文书
小学教师办公室制度
2014/02/03 职场文书
人民教师的自我评价分享
2014/02/21 职场文书
节约用水倡议书
2014/04/16 职场文书
项目合作协议书
2014/09/23 职场文书
2014年社区工会工作总结
2014/12/18 职场文书
开幕式邀请函
2015/01/31 职场文书
酒店辞职书范文
2015/02/26 职场文书
趣味运动会广播稿
2015/08/19 职场文书
幼儿园大班教师评语
2019/06/21 职场文书