Сортировка и группировка выборки из БД в Laravel

Сортировку и группировку результатов необходимо производить на стадии запроса к базе данных. В Laravel для этого есть несколько методов.

Сортировка

Как и в обычных SQL запросах, в методах для сортировки в Laravel направления задаются через слова-сокращения 'DESC' и 'ASC', которые соответственно значат обратную и прямую сортировку.

Приведём пример сортировки, в которой используется сортировка методом "orderBy". Первым аргументом в него передаётся название поля для сортировки, а вторым - направление:
<?php
   $users = DB::table('users')->orderBy('id', 'desc')->get();
?>
Если требуется сделать случайные порядок сортировки, то необходимо использовать метод "inRandomOrder":
<?php
   $users = DB::table('users')->inRandomOrder()->get();
?>
Существует ещё несколько вспомогательных методов. К примеру, с помощью "latest" и "oldest" можно сделать сортировку по дате (по убыванию и возрастанию). По умолчанию эти методы сортируют по столбцу "created_at":
<?php
   $users = DB::table('users')->latest()->get();
?>

Группировка

Для задания группировки используются методы "groupBy". Его можно сочетать с методом "having", который выполняет функцию метода "where", принимая аналогичный набор параметров:
<?php
   $users = DB::table('users')->groupBy('id')->having('id', '>', 10)->get();
?>
Бывают настолько сложные условия, что единственный выход - передать сырую часть SQL запроса в условие. Для этого используется метод "havingRaw":
<?php
   $users = DB::table('users')
         ->select('id', DB::raw('SUM(balance) as total_balance'))
         ->groupBy('service')
         ->havingRaw('SUM(balance) > 500')
         ->get();
?>
MouseDC.ru - хостинг, виртуальный хостинг, покупка доменов, проверка доменов, WHOIS, курсы создания сайтов, вебинары по созданию, курсы разработки сайтов, доработка сайтов, сопровождение сайтов, разработка сайтов, техподдержка сайтов
Cмотрите другие статьи:
Была ли статья полезной?
Была ли эта статья полезна? Есть вопрос?
хостинг для сайтов
Закажите недорогой хостинг Заказать

всего от 290 руб