Агрегатные функции и слияние запросов к БД в Laravel

В 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');
?>
MouseDC.ru - хостинг, виртуальный хостинг, покупка доменов, проверка доменов, WHOIS, курсы создания сайтов, вебинары по созданию, курсы разработки сайтов, доработка сайтов, сопровождение сайтов, разработка сайтов, техподдержка сайтов
Cмотрите другие статьи:
Была ли статья полезной?
Была ли эта статья полезна? Есть вопрос?
хостинг для сайтов
Закажите недорогой хостинг Заказать

всего от 290 руб