如何通过单个语句将嵌套关系提取到数组中
Posted
技术标签:
【中文标题】如何通过单个语句将嵌套关系提取到数组中【英文标题】:How can I fetch the nested relation through a single statement into an array 【发布时间】:2021-11-26 07:27:32 【问题描述】:我有四个模型,每个模型之间都有很多关系。
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;
但是我想把这些数组简化成一条语句,有可能吗?
【问题讨论】:
【参考方案1】:您可以使用 laravel Helpers data_get()
轻松获取嵌套数据。
Laravel 有很多辅助函数。了解这些功能会有很大帮助。
在你的情况下:
data_get($variable, 'a.b.c')
【讨论】:
【参考方案2】:您可以使用pluck()
和collapse()
。
A::with('B.C.D')->get()->pluck('B.*.C.*.D.*')->collapse();
它直接给你D的模型数据。
让我知道它是否解决了您的问题。
【讨论】:
快乐是我的全部。快乐编码:)以上是关于如何通过单个语句将嵌套关系提取到数组中的主要内容,如果未能解决你的问题,请参考以下文章
Mongoose:如何将子文档中的数组提取到父文档中的单个数组中
如何将嵌套的 JSON 对象转换为数组 Spring Boot?