Необходимо указать, что вы хотите упорядочить эпизоды по столбцу созданного сводной таблицы.
$user = User::where('id', $id)
->with(['episodes' => function ($query) {
$query->orderBy('user_episode_view.created_at', 'desc');
}])
->first();
Согласно документации (прокрутите вниз до Получение промежуточных столбцов таблицы ), если вы хотите показать дату created_at
для сводной таблицы, вы можете использовать атрибут pivot
:
$episode->pivot->created_at;
Вам также необходимо добавить withTimestamps()
метод ваших отношений:
public function users()
{
return $this->belongsToMany(User::class, 'user_episode_view', 'episode_id', 'user_id')
->withTimestamps();
}
<div class="index-tops">
@foreach ($user->episodes as $episode)
{{$episode->pivot->created_at}}
...
@endforeach
</div>
Если вы хотите сгруппировать эпизоды по дате, вы можете использовать метод groupBy () для коллекция эпизодов (обратите внимание, что это не то же самое, что метод groupBy
в построителе запросов).
Во-первых, измените метод контроллера следующим образом:
public function historique($id)
{
$user = User::findOrFail($id);
$episodes = $user->episodes()
->orderBy('user_episode_view.created_at', 'desc')
->get()
->groupBy(function ($episode) {
return $episode->pivot->created_at->toString();
});
return view('front.profils.historiques', compact('user', 'episodes'));
}
Затем измените свой блейд вид:
<div class="index-tops">
@foreach ($episodes as $date => $group)
<p>{{ $date }}</p>
@foreach ($group as $episode)
...
@endforeach
@endforeach
</div>
Если вы хотите отформатировать $date
по-другому, вы можете либо изменить его в методе groupBy
в вашем контроллере и использовать переменную $date
, как показано выше Например:
->groupBy(function ($episode) {
return $episode->pivot->created_at->format('jS F Y');
})
или вы можете получить первую запись в вашем клинке файл и формат, который:
<div class="index-tops">
@foreach ($episodes as $date => $group)
<p>{{ $group->first()->created_at->format('jS F Y') }}</p>
@foreach ($group as $episode)
...
@endforeach
@endforeach
</div>
Для получения дополнительной информации о том, как вы можете отформатировать даты, вы можете обратиться к PHP документация даты .