我有一个模型$ club,它与另一个模型$ events相关。
我使用此查询数据库以查找俱乐部
$clubs = Club::get()->where('city', $city);
然后,针对事件,我正在尝试通过复制所有与所有俱乐部相关的事件
foreach ($clubs as $club)
{
$events = Event::where('club_id', $club->id)->get()->sortBy('date');
}
问题是,当我回响事件时,我只看到一个俱乐部而不是所有俱乐部的事件,几乎就像我的循环没有在重复一样。
您可以通过执行此操作获得结果。您不需要循环。
$clubs = Club::where('city', $city)->get();
$club_ids = $clubs->pluck("id")->toArray();
$events = Event::wherein('club_id',$club_ids)->sortBy('date')->get();
@@ Mehran给出了最佳答案,但只是为了解决您的问题,请检查一下:
如果在循环后打印$events
,则将覆盖$events
变量,而您只看到迭代的最后一个值。
$events = [];
foreach ($clubs as $club) {
$events[] = Event::where('club_id', $club->id)->get()->sortBy('date');
}