如何通过单个语句将嵌套关系提取到数组中

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')