hackeresq / filter-models
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
v0.1
2025-01-24 21:46 UTC
Requires
- php: ^8.2
- laravel/framework: ^11.9
Requires (Dev)
None
Suggests
None
Provides
None
Conflicts
None
Replaces
None
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
- 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']); } }
- Then use your custom filter like this:
use App\Filters\PortfolioFilters; class PortfolioController extends ApiController { public function index(PortfolioFilters $filters) { return $filters->paginated(); } }