- Notifications
You must be signed in to change notification settings - Fork81
Generate trends for your models. Easily generate charts or reports.
License
Flowframe/laravel-trend
Folders and files
Name | Name | Last commit message | Last commit date | |
---|---|---|---|---|
Repository files navigation
Generate trends for your models. Easily generate charts or reports.
Most applications require charts or reports to be generated. Doing this over again, and again can be a painful process. That's why we've created a fluent Laravel package to solve this problem.
You can aggregate average, min, max, and totals per minute, hour, day, month, and year.
You can install the package via composer:
composer require flowframe/laravel-trend
To generate a trend for your model, import theFlowframe\Trend\Trend
class and pass along a model or query.
Example:
// Totals per month$trend = Trend::model(User::class) ->between( start:now()->startOfYear(), end:now()->endOfYear(), ) ->perMonth() ->count();// Average user weight where name starts with a over a span of 11 years, results are grouped per year$trend = Trend::query(User::where('name','like','a%')) ->between( start:now()->startOfYear()->subYears(10), end:now()->endOfYear(), ) ->perYear() ->average('weight');
You must either start a trend using::model()
or::query()
. The difference between the two is that using::query()
allows you to add additional filters, just like you're used to using eloquent. Using::model()
will just consume it as it is.
// ModelTrend::model(Order::class) ->between(...) ->perDay() ->count();// More specific order queryTrend::query( Order::query() ->hasBeenPaid() ->hasBeenShipped()) ->between(...) ->perDay() ->count();
You can use the following aggregates intervals:
perMinute()
perHour()
perDay()
perMonth()
perYear()
You can use the following aggregates:
sum('column')
average('column')
max('column')
min('column')
count('*')
By default, laravel-trend assumes that the model on which the operation is being performed has acreated_at
date column. If your model uses a different column name for the date or you want to use a different one, you should specify it using thedateColumn(string $column)
method.
Example:
Trend::model(Order::class) ->dateColumn('custom_date_column') ->between(...) ->perDay() ->count();
This allows you to work with models that have custom date column names or when you want to analyze data based on a different date column.
We currently support four drivers:
- MySQL
- MariaDB
- SQLite
- PostgreSQL
Please reviewour security policy on how to report security vulnerabilities.
The MIT License (MIT). Please seeLicense File for more information.
About
Generate trends for your models. Easily generate charts or reports.