gpt4 book ai didi

php - Laravel Eloquent 中的复杂连接子句

转载 作者:行者123 更新时间:2023-11-29 18:18:50 26 4
gpt4 key购买 nike

我有三个表:A、B 和 C。

表A:

  • ID
  • B_id
  • 值(value)

表B:

  • ID
  • C_id
  • 公司

表C:

  • ID
  • 状态

现在,我想使用 Eloquoent 关系执行以下查询。

select * from A, B, C where A.B_id = B.id and B.C_id = C.id and C.state = 1

我声明了每个模型中的关系并执行了以下查询:

A::with(['b' => function($query) { 
$query->with(['C'=> function($q) {
$q->where('state', 1);
}]);
}])->get();

但是,我没有得到预期的结果。

我在这里缺少什么?

最佳答案

当您使用带有范围的 with 时,您只会过滤关系,而不是您正在查询的顶级模型。您通常必须同时执行查询和作用域 with

示例:

A::query()
->whereHas('b.c', function ($q) {
$q->where('state', 1);
})
->with([
'b.c' => function ($q) {
$q->where('state', 1);
},
])->get();

关于php - Laravel Eloquent 中的复杂连接子句,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46766642/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com