Search by

hackeresq / filter-models

hackerESQ

This package is abandoned and no longer maintained. No replacement package was suggested.
There is no license information available for the latest version (v0.1) of this package.

Simple package to filter your Laravel models with query parameters

Package info

github.com/hackeresq/filter-models

pkg:composer/hackeresq/filter-models

Statistics

Installs: 8

Dependents: 0

Suggesters: 0

Stars: 2

Open Issues: 0

v0.1 2025-01-24 21:46 UTC

This package is auto-updated.

Last update: 2026-11-05 08:08:25 UTC


README

use HackerEsq\FilterModels\FilterModels;

class PortfolioController extends ApiController
{
    public function index(FilterModels $filters)
    {
        $filters->setQuery(Portfolio::query());
        $filters->setScopes(['myPortfolios']);
        $filters->setEagerRelations(['users', 'transactions', 'holdings']);
        $filters->setFilterableRelations(['holdings' => 'symbol', 'transactions' => 'symbol']);
        $filters->setSearchableColumns(['title', 'notes']);

        return $filters->paginated();
    }
}

Using filter classes

  1. Define a custom filter that extends the FilterModels class:
namespace App\Filters;

use HackerEsq\FilterModels\FilterModels;

class PortfolioFilter extends FilterModels
{
    public function apply(): void
    {
        $this->setModel(Portfolio::class);
        $this->setScopes(['myPortfolios']);
        $this->setEagerRelations(['users', 'transactions', 'holdings']);
        $this->setFilterableRelations(['holdings' => 'symbol', 'transactions' => 'symbol']);
        $this->setSearchableColumns(['title', 'notes']);
    }
}
  1. Then use your custom filter like this:
use App\Filters\PortfolioFilters;

class PortfolioController extends ApiController
{
    public function index(PortfolioFilters $filters)
    {

        return $filters->paginated();
    }
}