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 28 PHP
php下几个常用的去空、分组、调试数组函数
Feb 22 PHP
input file获得文件根目录简单实现
Apr 26 PHP
解析如何屏蔽php中的phpinfo()函数
Jun 06 PHP
PHP Web木马扫描器代码分享
Sep 06 PHP
Yii2.0高级框架数据库增删改查的一些操作
Nov 16 PHP
Zend Framework教程之请求对象的封装Zend_Controller_Request实例详解
Mar 07 PHP
Yii2 ActiveRecord多表关联及多表关联搜索的实现
Jun 30 PHP
php通过执行CutyCapt命令实现网页截图的方法
Sep 30 PHP
php基于curl实现的股票信息查询类实例
Nov 11 PHP
PHP 文件锁与进程锁的使用示例
Aug 07 PHP
PHP simplexml_import_dom()函数讲解
Feb 03 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
一个程序下载的管理程序(一)
2006/10/09 PHP
CI框架开发新浪微博登录接口源码完整版
2014/05/28 PHP
PHP输出英文时间日期的安全方法(RFC 1123格式)
2014/06/13 PHP
PHP中上传多个文件的表单设计例子
2014/11/19 PHP
讲解WordPress中用于获取评论模板和搜索表单的PHP函数
2015/12/28 PHP
PHP使用socket发送HTTP请求的方法
2016/02/14 PHP
详解PHP如何更好的利用PHPstorm的自动提示
2017/08/18 PHP
php post json参数的传递和接收处理方法
2018/05/31 PHP
laravel 操作数据库常用函数的返回值方法
2019/10/11 PHP
JavaScript window.setTimeout() 的详细用法
2009/11/04 Javascript
Javascript设置对象的ReadOnly属性(示例代码)
2013/12/25 Javascript
jQuery实现返回顶部功能适合不支持js的浏览器
2014/08/19 Javascript
node.js中的fs.appendFileSync方法使用说明
2014/12/17 Javascript
javascript实现复选框超过限制即弹出警告框的方法
2015/02/25 Javascript
详解Angularjs中的依赖注入
2016/03/11 Javascript
Bootstrap的popover(弹出框)2秒后定时消失的实现代码
2017/02/27 Javascript
微信小程序本地缓存数据增删改查实例详解
2017/05/24 Javascript
一文让你彻底搞清楚javascript中的require、import与export
2017/09/24 Javascript
Vue结合Video.js播放m3u8视频流的方法示例
2018/05/04 Javascript
vue 右键菜单插件 简单、可扩展、样式自定义的右键菜单
2018/11/29 Javascript
前端js中的事件循环eventloop机制详解
2019/05/15 Javascript
简单了解微信小程序的目录结构
2019/07/01 Javascript
浅谈vue 锚点指令v-anchor的使用
2019/11/13 Javascript
[02:02]2018DOTA2亚洲邀请赛Mineski赛前采访
2018/04/04 DOTA
用实例分析Python中method的参数传递过程
2015/04/02 Python
Python使用gensim计算文档相似性
2016/04/10 Python
Python用imghdr模块识别图片格式实例解析
2018/01/11 Python
Python超越函数积分运算以及绘图实现代码
2019/11/20 Python
Python使用windows设置定时执行脚本
2020/11/12 Python
Homestay中文官网:全球寄宿家庭
2018/10/18 全球购物
Subside Sports德国:足球球衣和球迷商品
2019/06/08 全球购物
食品营养与检测应届生求职信
2013/11/08 职场文书
美国探亲签证邀请信
2014/02/05 职场文书
面试通知邮件
2015/04/20 职场文书
导游词之广东佛山(南风古灶)
2019/09/24 职场文书
详解Python中的for循环
2022/04/30 Python