如何通过单个语句将嵌套关系提取到数组中
How can I fetch the nested relation through a single statement into an array
我有四个模型,每个模型之间都有许多关系。
A有很多B
B有很多C
C有很多D
我的主模型是A,想通过A取D,我是这样查询取D的
A::with('B.C.D')->get();
我是这样取D的:
$answer = [];
foreach(A as a) {
foreach(a->B as b){
foreach(b->C as c) {
foreach(c->D as d) {
$answer[] = d;
}
}
}
}
但是我想将这些数组缩减为一条语句,可以吗?
您可以使用 pluck()
和 collapse()
。
A::with('B.C.D')->get()->pluck('B.*.C.*.D.*')->collapse();
直接给你D的模型数据
让我知道它是否解决了您的问题。
您可以使用 laravel Helpers data_get()
轻松获取嵌套数据。
Laravel 有很多辅助功能。了解这些功能很有帮助。
你的情况:
data_get($variable, 'a.b.c')
我有四个模型,每个模型之间都有许多关系。
A有很多B B有很多C C有很多D
我的主模型是A,想通过A取D,我是这样查询取D的
A::with('B.C.D')->get();
我是这样取D的:
$answer = [];
foreach(A as a) {
foreach(a->B as b){
foreach(b->C as c) {
foreach(c->D as d) {
$answer[] = d;
}
}
}
}
但是我想将这些数组缩减为一条语句,可以吗?
您可以使用 pluck()
和 collapse()
。
A::with('B.C.D')->get()->pluck('B.*.C.*.D.*')->collapse();
直接给你D的模型数据
让我知道它是否解决了您的问题。
您可以使用 laravel Helpers data_get()
轻松获取嵌套数据。
Laravel 有很多辅助功能。了解这些功能很有帮助。
你的情况:
data_get($variable, 'a.b.c')