@jazzus

Как применить второй orderBy в запросе?

Код
Model::orderBy('field','desc')
     ->take(100)
     ->orderBy('field','asc')
     ->take(50)
     ->get();

Использует только первый orderBy. Вторую сортировку только из коллекции?
  • Вопрос задан
  • 426 просмотров
Решения вопроса 3
alexey-m-ukolov
@alexey-m-ukolov Куратор тега Laravel
Ну, двойную сортировку я ещё могу понять. Но чего вы вторым лимитом пытаетесь добиться, какой результат ожидаете? Вы реально одно и то же поле пытаетесь отсортировать сначала по убыванию, а потом по возрастанию? Какой результат вы ожидаете в таком случае?

Вообще, множественная сортировка именно так и указывается - Eloquent под капотом собирает все сортировки в массив и применяет их по очереди. Проблема у вас в том, что запрос какой-то бессмысленный.
Ответ написан
Model::orderBy('field','desc')->take(100)->get()->sortBy('field')->take(50);
Ответ написан
Комментировать
@NubasLol
Model::orderBy('field','desc')->skip(50)->take(50)->reverse();


А по хорошему, надо сделать селект от этой выборки и уже его отсортировать
$sql = Model::orderBy('field','desc')->take(100)->toSql();

$reslut = Model::from(DB::raw("($sql) as tabes"))->orderBy('field')->take(50)->get()
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы