watson/aggregate
Extend Laravel's query builder with additional relation aggregates.
160,878
61
| Install | |
|---|---|
composer require watson/aggregate |
|
| Latest Version: | 5.4.0 |
| PHP: | ^8.1 |
| License: | MIT |
| Last Updated: | Feb 23, 2026 |
| Links: | GitHub · Packagist |
Maintainer: dwightwatson
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
Related Packages
hootlex/laravel-friendships
This package gives Eloquent models the ability to manage their friendships.
124,561
698
kodeine/laravel-acl
Light-weight role-based permissions for Laravel 5 built in Auth system.
363,834
774