hackeresq / filter-models
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
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(); } }