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-trendTo generate a trend for your model, import the Flowframe\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.
// Model
Trend::model(Order::class)
->between(...)
->perDay()
->count();
// More specific order query
Trend::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 a created_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 the dateColumn(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 review our security policy on how to report security vulnerabilities.
The MIT License (MIT). Please see License File for more information.