我有可以包含子事件的事件,并且每个事件可以包含时间轴项目。
寻找一种获取嵌套集合的方法。
对于事件,我可以将它们与时间轴项一起使用:
App\Event::with('timelines')->get()
对于事件,我可以使用嵌套子事件:
App\Event::doesntHave('parent')->with('subEvents')->get()
如何将两者结合?
预期的最终结果:
每个事件包括
1)该事件的时间轴项目,以及
2)该事件的子事件(以及每个子事件:该子事件的时间轴项目)。
例如:
- Event 1
- Timeline: 1, 3, 5
- subEvents:
- 2, Timeline: 2, 6
- 3, Timeline: 7, 8
- Event 4
- Timeline: 9
- Event 5
- subEvents:
- 6, Timeline: 10
也可以获取结果并使用集合分组。la App\Event::with('timelines')->get()->groupBy('parent_id')
,但是难以到达所需的结构。
如果要制作这种结构。
- Event 1
- Timeline: 1, 3, 5
- subEvents:
- 2, Timeline: 2, 6
- 3, Timeline: 7, 8
- Event 4
- Timeline: 9
- Event 5
- subEvents:
- 6, Timeline: 10
您可以从Event
模型中检索时间表以及subEvents
时间表的时间表。为了使您可以创建一个subEvents
检索功能。
App\Event::with(['timelines','subEvents' => function($q){
$q->with('timelines');
])->get();
或者这个,如果你不需要做任何疑问在子事件。
App\Event::with('timelines','subEvents.timelines')->get();
确保您的模型的关系必须像这样:
//Event.php
class Event extends Model
{
public function timelines(){
return $this->hasMany('App\Timeline');
}
public function subEvents(){
return $this->hasMany('App\SubEvent');
}
}
//SubEvent.php
class SubEvent extends Model
{
public function timelines(){
return $this->hasMany('App\Timeline');
}
}
我认为,这可能会对您有所帮助。
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句