laravel-enso/filters

Search and interval helpers for Laravel Enso

Maintainers

Package info

github.com/laravel-enso/filters

pkg:composer/laravel-enso/filters

Statistics

Installs: 40 639

Dependents: 4

Suggesters: 0

Stars: 0

Open Issues: 0

3.0.3 2026-05-01 08:01 UTC

README

License Stable Downloads PHP Issues Merge Requests

Description

Filters provides reusable search and date-interval helpers for Laravel Enso and standalone Laravel code.

The package includes a query search helper that supports multiple search modes and relation-aware matching, plus an interval iterator that builds hourly, daily, monthly, or yearly segments across predefined or custom ranges.

It has no routes or migrations. It is a pure helper package.

Installation

Install the package:

composer require laravel-enso/filters

Features

  • Full-text, exact-match, starts-with, ends-with, and negated search modes.
  • Support for custom comparison operators.
  • Search across direct attributes and related attributes.
  • Interval generation for today, week, month, year, custom, and all-time ranges.
  • Time-segment labels suitable for charts and aggregate dashboards.

Usage

Search a query:

use LaravelEnso\Filters\Services\Search;

$query = new Search(User::query(), ['name', 'email'], 'john');
$results = $query->handle();

Build an interval:

use LaravelEnso\Filters\Enums\Intervals;
use LaravelEnso\Filters\Services\Interval;

$interval = new Interval(Intervals::ThisMonth);

Manual intervals require both limits:

use Carbon\Carbon;
use LaravelEnso\Filters\Enums\Intervals;
use LaravelEnso\Filters\Services\Interval;

$interval = new Interval(
    Intervals::Custom,
    min: Carbon::parse('2026-05-01 00:00:00'),
    max: Carbon::parse('2026-05-01 23:59:59'),
);

Validation failures are returned as LaravelEnso\Helpers\Exceptions\EnsoException by default, which keeps UI/API consumers aligned with the standard Enso error response. Pass ui: false when using the service outside the UI layer and you need the native LaravelEnso\Filters\Exceptions\Interval exception:

new Interval(Intervals::Custom, ui: false);

API

Services

  • LaravelEnso\\Filters\\Services\\Search
  • LaravelEnso\\Filters\\Services\\Interval

Enums

  • ComparisonOperators
  • SearchModes
  • Intervals
  • TimeSegments
  • Operations
  • Adjustments

Depends On

Required Enso packages:

Companion frontend package:

Contributions

are welcome. Pull requests are great, but issues are good too.

Thank you to all the people who already contributed to Enso!