В Laravel группировка и суммирование данных — обычное требование при работе с базами данных. Если вам нужно рассчитать общий объем продаж по категориям или средние баллы на одного пользователя, Laravel предлагает несколько методов для эффективного достижения этой цели. В этой статье мы рассмотрим семь эффективных методов суммирования сгруппированных данных в Laravel, а также приведем примеры кода, демонстрирующие их использование.
Метод 1: использование построителя запросов с группировкой по и суммой
$results = DB::table('sales')
->select('category', DB::raw('SUM(amount) as total_sales'))
->groupBy('category')
->get();
Метод 2: использование Eloquent ORM с группировкой по и суммой
$results = Sale::select('category', DB::raw('SUM(amount) as total_sales'))
->groupBy('category')
->get();
Метод 3. Использование построителя запросов с предложением Have
$results = DB::table('sales')
->select('category', DB::raw('SUM(amount) as total_sales'))
->groupBy('category')
->havingRaw('SUM(amount) > ?', [1000])
->get();
Метод 4: использование Eloquent ORM с предложением Have
$results = Sale::select('category', DB::raw('SUM(amount) as total_sales'))
->groupBy('category')
->havingRaw('SUM(amount) > ?', [1000])
->get();
Метод 5. Использование построителя запросов с подзапросами
$subquery = DB::table('sales')
->select('category', DB::raw('SUM(amount) as total_sales'))
->groupBy('category');
$results = DB::table(DB::raw("({$subquery->toSql()}) as sub"))
->mergeBindings($subquery)
->select('category', 'total_sales')
->get();
Метод 6: использование Eloquent ORM с подзапросами
$subquery = Sale::select('category', DB::raw('SUM(amount) as total_sales'))
->groupBy('category');
$results = Sale::query()
->fromSub($subquery, 'sub')
->select('category', 'total_sales')
->get();
Метод 7. Использование необработанных SQL-запросов
$results = DB::select('SELECT category, SUM(amount) as total_sales FROM sales GROUP BY category');
Суммирование сгруппированных данных в Laravel можно выполнить различными методами в зависимости от ваших конкретных требований. Независимо от того, предпочитаете ли вы использовать Query Builder, Eloquent ORM или необработанные SQL-запросы, Laravel предлагает гибкость и удобство для задач агрегирования данных. Используя эти методы, вы можете эффективно рассчитывать суммы, применять условия и получать значимую информацию на основе сгруппированных данных.