Сортировка
Как и в обычных 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();
?>