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和ACCESS写聊天室(四)
Oct 09 PHP
Php注入点构造代码
Jun 14 PHP
php 服务器调试 Zend Debugger 的安装教程
Sep 25 PHP
php去除重复字的实现代码
Sep 16 PHP
深入php 正则表达式的学习探讨
Jun 06 PHP
基于php导出到Excel或CSV的详解(附utf8、gbk 编码转换)
Jun 25 PHP
thinkphp特殊标签用法概述
Nov 24 PHP
php使用MySQL保存session会话的方法
Jun 18 PHP
php实现的任意进制互转类分享
Jul 07 PHP
SSO单点登录的PHP实现方法(Laravel框架)
Mar 23 PHP
PHP封装的PDO数据库操作类实例
Jun 21 PHP
laravel 5.4 + vue + vux + element的环境搭配过程介绍
Apr 26 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的一个简单加密解密代码
2014/01/14 PHP
thinkPHP连接sqlite3数据库的实现方法(附Thinkphp代码生成器下载)
2016/05/27 PHP
对联广告js flash激活
2006/10/19 Javascript
js tab 选项卡
2009/04/26 Javascript
javascript解决innerText浏览器兼容问题思路代码
2013/05/17 Javascript
js调用AJAX时Get和post的乱码解决方法
2013/06/04 Javascript
jQuery.holdReady()使用方法
2014/05/20 Javascript
用box固定长宽实现图片自动轮播js代码
2014/06/09 Javascript
node.js下when.js 的异步编程实践
2014/12/03 Javascript
jQuery插件jFade实现鼠标经过的图片高亮其它变暗
2015/03/14 Javascript
JS+CSS实现简易的滑动门效果代码
2015/09/24 Javascript
js实现C#的StringBuilder效果完整实例
2015/12/22 Javascript
jQuery制作网页版选项卡
2016/07/28 Javascript
JavaScript & jQuery完美判断图片是否加载完毕
2017/01/08 Javascript
javascript验证香港身份证的格式或真实性
2017/02/07 Javascript
JS中SetTimeout和SetInterval使用初探
2017/03/23 Javascript
Vue+Element使用富文本编辑器的示例代码
2017/08/14 Javascript
Vue-resource拦截器判断token失效跳转的实例
2017/10/27 Javascript
响应式框架Bootstrap栅格系统的实例
2017/12/19 Javascript
JS中的模糊查询功能
2019/12/08 Javascript
[04:59]2018DOTA2亚洲邀请赛 4.7 Mineski夺冠时刻
2018/04/09 DOTA
Django小白教程之Django用户注册与登录
2016/04/22 Python
python 性能优化方法小结
2017/03/31 Python
使用Python写一个贪吃蛇游戏实例代码
2017/08/21 Python
Python内置模块ConfigParser实现配置读写功能的方法
2018/02/12 Python
使用Python微信库itchat获得好友和群组已撤回的消息
2018/06/24 Python
Python基于opencv实现的简单画板功能示例
2019/03/04 Python
Linux下远程连接Jupyter+pyspark部署教程
2019/06/21 Python
python pillow模块使用方法详解
2019/08/30 Python
python中pandas库中DataFrame对行和列的操作使用方法示例
2020/06/14 Python
丝芙兰法国官网:SEPHORA法国
2016/09/01 全球购物
印尼极简主义和实惠的在线家具店:Fabelio
2019/03/27 全球购物
Harman Audio官方商店:购买JBL、Harman Kardon、Infinity和AKG
2019/12/05 全球购物
初中考试作弊检讨书
2014/02/01 职场文书
装修施工安全责任书
2014/07/24 职场文书
公务员学习中国梦心得体会
2016/01/05 职场文书