当前位置: 首页 > 编程笔记 >

laravel高级的Join语法详解以及使用Join多个条件

冯浩旷
2023-03-14
本文向大家介绍laravel高级的Join语法详解以及使用Join多个条件,包括了laravel高级的Join语法详解以及使用Join多个条件的使用技巧和注意事项,需要的朋友参考一下

在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多个条件就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持小牛知识库。

 类似资料:
  • 本文向大家介绍浅谈java多线程 join方法以及优先级方法,包括了浅谈java多线程 join方法以及优先级方法的使用技巧和注意事项,需要的朋友参考一下 join: 当A线程执行到了B线程的.join()方法时,A就会等待。等B线程都执行完,A才会执行。 join可以用来临时加入线程执行。 1、线程使用join方法,主线程就停下,等它执行完,那么如果该线程冻结了,主线程就挂了,这也是为什么线程要

  • 本文向大家介绍JAVA多线程之方法 JOIN详解及实例代码,包括了JAVA多线程之方法 JOIN详解及实例代码的使用技巧和注意事项,需要的朋友参考一下 JAVA多线程 JOIN  对于Java开发人员,多线程应该是必须熟练应用的知识点,特别是开发基于Java语言的产品。本文将深入浅出的表述Java多线程的知识点,在后续的系列里将侧重于Java5由Doug Lea教授提供的Concurrent并行包

  • 本文向大家介绍浅析Mysql Join语法以及性能优化,包括了浅析Mysql Join语法以及性能优化的使用技巧和注意事项,需要的朋友参考一下 一.Join语法概述 join 用于多表中字段之间的联系,语法如下: table1:左表;table2:右表。 JOIN 按照功能大致分为如下三类: INNER JOIN(内连接,或等值连接):取得两个表中存在连接匹配关系的记录。 LEFT JOIN(左连

  • 本文向大家介绍Mysql中Join的使用实例详解,包括了Mysql中Join的使用实例详解的使用技巧和注意事项,需要的朋友参考一下 在前几章节中,我们已经学会了如果在一张表中读取数据,这是相对简单的,但是在真正的应用中经常需要从多个数据表中读取数据。 本章节我们将向大家介绍如何使用MySQL 的 JOIN 在两个或多个表中查询数据。 你可以在SELECT, UPDATE 和 DELETE 语句中使

  • 问题内容: 我正在研究别人的PHP代码,并且一遍又一遍地看到这种模式: (伪代码) 如果其他表中没有相关行,则代码需要分支,但是通过在单个SELECT语句中执行LEFT JOIN不能做到更好吗?我是否缺少一些性能优势?可移植性问题?还是我只是在挑剔? 问题答案: 没有足够的信息来真正回答问题。我曾在一些应用程序上工作过,这些应用程序出于一个原因减少查询数量而出于另一个原因增加查询数量 都 提高了性

  • 本文向大家介绍inner join和left join之间的区别详解,包括了inner join和left join之间的区别详解的使用技巧和注意事项,需要的朋友参考一下 前言 关于inner join 与 left join 之间的区别,以前以为自己搞懂了,今天从前端取参数的时候发现不是预想中的结果,才知道问题出在inner join 上了。 需求是从数据库查数据,在前端以柱形图的形式展现出来,

  • 在这个候选答案中,有人断言,在某些涉及一些WHERE子句的情况下,JOIN优于LEFT JOIN,因为它不会混淆查询计划器,也不是“无意义的”。断言/假设是,这对任何人来说都应该是显而易见的。 请进一步解释或提供链接以供进一步阅读。

  • 本文向大家介绍SQL联合查询inner join、outer join和cross join的区别详解,包括了SQL联合查询inner join、outer join和cross join的区别详解的使用技巧和注意事项,需要的朋友参考一下 对于开发使用到数据库的应用,免不了就要使用联合查询,SQL中常用的联合查询有inner join、outer join和cross join;这三者的区别很多人