【发布时间】:2016-01-30 04:54:59
【问题描述】:
我有一个 Laravel,它是使用 Laravel 查询构建器构建的。我能够得到结果,但现在我想把它放在一个嵌套集合中。我希望它在一个嵌套集合中,我可以在我的视图中使用这样的东西:
@foreach($lander AS $land)
// do something with $land
@foreach($land->companies as $company)
// do something with $company
@foreach($company->values as $value)
// do something with $value
@endforeach
@endforeach
@endforeach
这是我的查询结果,我想将其放入嵌套集合中:
+-----------+---------+---------------+------------+-------------+----------+
| 'land_id' | 'land' | 'company_id' | 'company' | 'value_id' | 'value' |
+-----------+---------+---------------+------------+-------------+----------+
| 1 | Germany | 1 | Company1 | 1 | value1 |
| 1 | Germany | 1 | Company1 | 2 | value2 |
| 1 | Germany | 2 | Company2 | 3 | value3 |
| 1 | Germany | 2 | Company2 | 4 | value4 |
| 1 | Germany | 3 | Company3 | 5 | value5 |
| 2 | France | 4 | Company4 | 7 | value6 |
| 2 | France | 4 | Company4 | 8 | value7 |
| 2 | France | 5 | Company5 | 9 | value8 |
+-----------+---------+---------------+------------+-------------+----------+
编辑: 目前我在存储库中使用 DB::select() 语句获取数据,并希望将其作为一个对象从控制器传递到视图。
编辑2:
如果这不容易实现,那么这一切的基础是:
我有这种定义关系的数据库情况(A、B、C、D、E 是表):
A -> hasMany(B)
B -> hasMany(C)
C -> belongsToMany(E) -> through Pivot Table (D)
现在我来自一个对象 E 并想要一个可以像这样使用的集合:
@foreach($A as $a)
// do something with $a
@foreach($a->B as $b)
// do something with $b
@foreach($b->C as $c)
// do something with $c
@endforeach
@endforeach
@endforeach
编辑3:
帕特里克斯的回答成功了一半:
-> 嗯,我看了一下 MySQL Query,这很奇怪......
第一
它以正确的条件加载所有 A(E_id 和 wherePivot)
然后
它加载 (A_id) 中的所有 B
它加载 (B_id) 中的所有 C
它加载 (C_id) 中的所有 E
--> 当然,这会导致比第一个 wright 查询更多的记录...
【问题讨论】:
-
您是否使用 Eloquent 来取回数据?您能否分享一下您是如何获取数据并将其传递给视图的。
标签: laravel