Ответ 1
Так вот как вы сортируете с SQL:
$posts = auth()->user()->posts()->orderBy('updated_at', 'DESC');
И с коллекциями:
$posts = auth()->user()->posts->sortByDesc('updated_at');
Я тестировал второй, и он работает для меня.
Мне нужно упорядочить столбец с коллекцией.
Мне нужно 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();
Но я хотел бы сделать то же самое с коллекциями.
Так вот как вы сортируете с SQL:
$posts = auth()->user()->posts()->orderBy('updated_at', 'DESC');
И с коллекциями:
$posts = auth()->user()->posts->sortByDesc('updated_at');
Я тестировал второй, и он работает для меня.
@devk прав. То, что я написал в первом посте, правильно.
Проблема была в DataTables в представлении.
Нужно было добавить эту строку в опции Datatables:
"order": [[ 5, 'desc' ]], // 5 is the 'updated_at' column (the sixth column in my case)
Так что это работает нормально:
$posts = auth()->user()->posts->sortByDesc('updated_at');
Попробуйте добавить в свою модель пользователя следующее:
public function posts_sortedByDesc(){
return $this->hasMany(Post::class)->sortByDesc('updated_at');
}
Затем получите сообщения, вызвав posts_sortedByDesc
вместо posts