Laravel: заказать колонку с коллекциями
Мне нужно заказать колонку с коллекцией.
Мне нужно orderBy(updated_at, 'desc')
все записи, которые принадлежат текущему зарегистрированному пользователю.
Вот мой код:
$posts = auth()->user()->posts->sortByDesc('updated_at');
Вот модель пользователя:
class User extends Authenticatable
{
public function posts()
{
return $this->hasMany(Post::class);
}
}
Он не возвращает никаких ошибок и не сортирует !
Любая помощь была бы очень признательна.
P. S:
Я знаю, что могу достичь этого с помощью:
$posts = Post::where('user_id', auth()->user()->id)->orderBy('updated_at', 'desc')->get();
Но я хотел бы сделать то же самое с коллекциями.3 ответа:
Итак, вот как вы сортируете с помощью SQL:
$posts = auth()->user()->posts()->orderBy('updated_at', 'DESC');
И с коллекциями:
$posts = auth()->user()->posts->sortByDesc('updated_at');
Я протестировал 2-й, и он работает так, как мне предназначено.
@devk прав. То, что я написал в первом посте, верно.
Проблема была вDataTables в представлении.
Нужно было добавить эту строку в опции Datatables:
"order": [[ 5, 'desc' ]], // 5 is the `updated_at` column (the fifth column in my case)
Так что это работает нормально:
$posts = auth()->user()->posts->sortByDesc('updated_at');