在Laravel Eloquent上运行for循环迭代

问题描述 投票:0回答:2

我有一个模型$ club,它与另一个模型$ events相关。

我使用此查询数据库以查找俱乐部

$clubs = Club::get()->where('city', $city);

然后,针对事件,我正在尝试通过复制所有与所有俱乐部相关的事件

foreach ($clubs as $club) 
                {

                $events = Event::where('club_id', $club->id)->get()->sortBy('date');

                }

问题是,当我回响事件时,我只看到一个俱乐部而不是所有俱乐部的事件,几乎就像我的循环没有在重复一样。

php laravel eloquent
2个回答
0
投票

您可以通过执行此操作获得结果。您不需要循环。

$clubs = Club::where('city', $city)->get();
$club_ids = $clubs->pluck("id")->toArray();
$events = Event::wherein('club_id',$club_ids)->sortBy('date')->get();

0
投票

@@ Mehran给出了最佳答案,但只是为了解决您的问题,请检查一下:

如果在循环后打印$events,则将覆盖$events变量,而您只看到迭代的最后一个值。

$events = [];
foreach ($clubs as $club) {
  $events[] = Event::where('club_id', $club->id)->get()->sortBy('date');
}
© www.soinside.com 2019 - 2024. All rights reserved.