Я бы рекомендовал добавить один или два вспомогательных метода в модель Congress
, которые сообщают вам, закончился ли конгресс или нет. Я ожидаю, что это обычное требование в вашем приложении.
class Congress
{
// other code
public function isFinished(): bool
{
return $this->congress_end_date < now();
}
}
(Ожидается, что на модели вы получите $dates = ['congress_end_date', ...]
).
Затем вы можете использовать метод filter()
в вашей коллекции, чтобы получить все Registrations
с Congress
, которое уже закончено (или также наоборот):
@foreach($registrations->filter(function ($item) { return $item->congress->isFinished(); }) as $reg)
// do something with the registrations of finished congresses
@endforeach
[необязательно: только если вам нужны не все регистрации, а только законченные]
Если вы не планируете использовать все предметы из $registrations
, а только те, которые имеют законченный конгресс, я бы порекомендовал вам брать только те, которые вам нужны. Вы можете сделать это в вашем контроллере, поменяв местами
$registrations = $user->registrations()->with('congress')->get();
в пользу
$registrations = $user->registrations()
->with('congress')
->whereHas(['congress' => function ($query) {
$query->where('congress_end_date', '<', now());
}])
->get();
Затем вы можете просто просмотреть их в своем представлении без фильтрации до:
@foreach($registrations as $reg)
// ...
@endforeach