https://github.com/dwightwatson/aggregate
Support additional aggregate queries on Eloquent relations
https://github.com/dwightwatson/aggregate
eloquent laravel php
Last synced: about 1 month ago
JSON representation
Support additional aggregate queries on Eloquent relations
- Host: GitHub
- URL: https://github.com/dwightwatson/aggregate
- Owner: dwightwatson
- License: mit
- Created: 2018-09-17T04:56:12.000Z (almost 7 years ago)
- Default Branch: master
- Last Pushed: 2025-03-17T03:20:11.000Z (4 months ago)
- Last Synced: 2025-04-10T01:08:30.737Z (3 months ago)
- Topics: eloquent, laravel, php
- Language: PHP
- Size: 15.6 KB
- Stars: 63
- Watchers: 3
- Forks: 10
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
- License: LICENSE.md
Awesome Lists containing this project
README
# 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`](https://github.com/laravel/framework/pull/25319) - thanks to Mohammad Sharif Ahrari ([@spyp](https://github.com/spyp)).
## Installation
You can install the package via Composer:
```bash
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](https://laravel.com/docs/5.7/eloquent-relationships#counting-related-models).
```php
$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.
```php
$orders = Order::withCount('products')->withSum('products as products_price', 'price')->get();$orders->each(function ($order) {
$order->products_count;$order->products_price;
});
``````php
$orders = Order::withCount('products')->withMax('products', 'price')->get();$orders->each(function ($order) {
$order->products_count;$order->products_max;
});
```### Testing
``` bash
vendor/bin/phpunit
```