【问题标题】:Is it possible to limit rows of joined table only using Laravel Query Builder?是否可以仅使用 Laravel 查询生成器来限制连接表的行?
【发布时间】:2020-09-07 17:18:00
【问题描述】:

考虑另一个表的最后一条记录是否满足条件,我需要从主查询中获取行列表。

假设 Table ATable B 具有一对多关系,而 Table BTable C 具有一对一关系

我想从 Table A 中获取记录列表,其中 Table BTable C 中的最后一条记录满足给定条件(在B 和 C)。

-更新-

表 A

标识 |交流1 |交流2

表 B

标识 | table_a_id | bc1 | bc2

表 C

标识 | table_b_id | cc1 | cc2

我想要表 A 中的所有记录,其中表 B 和 C 中每个记录的最后一条记录都满足条件。 (最后一条记录有 bc1 = "GIVEN" 和 cc1 = "GIVEN")

【问题讨论】:

  • 请为所有表添加示例数据,以便更好地解释您在此处尝试执行的操作。
  • @TimBiegeleisen问题更新

标签: laravel laravel-query-builder


【解决方案1】:

我从您的请求中了解到,您可以使用类似于此查询的内容

$query = A::leftjoin('B', 'A.id', '=', 'B.table_a_id')
    ->leftjoin('C', 'A.id', '=', 'C.table_b_id')
    ->where('B.bc1', 'GIVEN')
    ->where('C.cc1', 'GIVEN')
    ->select(
        'A.*',
        'B.bc1',
        'C.cc1'
    )
    ->get();

【讨论】:

  • 不,我们假设表 A 有用户记录。 B和C中的每个用户可以有多个记录。其中我需要检查特定用户的B和C中的最新行是否与给定条件匹配。在您的建议中,它只是将条件应用于所有加入的记录。
猜你喜欢
  • 2016-11-16
  • 2021-07-24
  • 2022-01-20
  • 2015-05-09
  • 2014-05-13
  • 2020-03-12
  • 2014-12-06
  • 2019-10-23
  • 1970-01-01
相关资源
最近更新 更多