В Laravel есть множество методов для работы с базой данных, с помощью которых можно организовать практически любую логику SQL запросов. В этой статье рассмотрим ещё два метода: для объединения запросов и для арифметических операций внутри запроса.
Слияние запросов
Иногда требуется сделать объединение двух выборок из базы данных. Делается это с помощью метода "union":
<?php
$admins = DB::table('users')->where('group', '=', 'admin');
$users = DB::table('users')
->where('id', '>', '54')
->union($admins)
->get();
?>
Таким образом в переменной "$users" окажется массив с данными выборки из первого и второго запроса.
Агрегатные функции
Обработка результатов выборки в PHP - это довольно медленный процесс. Лучше сразу составить запрос к базе данных, в котором будут выполняться необходимые операции. Так результат получится намного быстрее. К примеру, если необходимо получить только количество строк в выборке, то можно использовать метод "count", который возвращает целое число:
<?php
$users = DB::table('users')->count();
echo 'Количество пользователей: ' . $users;
?>
Помимо операции подсчёта строк на базу данных можно возложить и другие функции. К примеру, операция по определению максимального, минимального, среднего значения и суммы. Для этого используются следующие методы:
<?php
// значение максимального баланса среди всех пользователей
$max = DB::table('users')->max('balance');
// значение минимального баланса
$min = DB::table('users')->min('balance');
// средний баланс по всем пользователям
$avg = DB::table('users')->avg('balance');
// суммарный баланс всех пользователей в системе
$sum = DB::table('users')->sum('balance');
?>
Эти методы можно комбинировать с другими, чтобы создать более сложные условия. К примеру:
<?php
// средний баланс среди администраторов
$avgAdmin = DB::table('users')
->where('group', '=', 'admin')
->avg('balance');
?>