LaravelPackages.net
Acme Inc.
Toggle sidebar
watson/aggregate

Extend Laravel's query builder with additional relation aggregates.

154.798
61
5.4.0
About watson/aggregate

watson/aggregate is a Laravel package for extend laravel's query builder with additional relation aggregates.. It currently has 61 GitHub stars and 154.798 downloads on Packagist (latest version 5.4.0). Install it with composer require watson/aggregate. Discover more Laravel packages by watson or browse all Laravel packages to compare alternatives.

Last updated

Aggregate

Laravel Eloquent allows you to query the count of a relationship using withCount. Aggregate extends Eloquent by adding withSum, withAvg, withMin and withMax.

This is based off the work in laravel/framework#25319 - thanks to Mohammad Sharif Ahrari (@spyp).

Installation

You can install the package via Composer:

composer require watson/aggregate

Usage

The additional methods will be added by Laravel's autodiscovery feature. You can then use them the same way you already use withCount. See the Laravel documentation for more on how this works.

$orders = Order::withSum('products', 'quantity')->get();

$orders->each(function ($order) {
    $order->products_sum;
});

You can also select multiple aggregates in a single query, as well as alias them.

$orders = Order::withCount('products')->withSum('products as products_price', 'price')->get();

$orders->each(function ($order) {
    $order->products_count;

    $order->products_price;
});
$orders = Order::withCount('products')->withMax('products', 'price')->get();

$orders->each(function ($order) {
    $order->products_count;

    $order->products_max;
});

Testing

vendor/bin/phpunit

Star History Chart