hackeresq / filter-models
Simple package to filter your Laravel models with query parameters
Installs: 0
Dependents: 0
Suggesters: 0
Security: 0
Stars: 1
Watchers: 1
Forks: 0
Open Issues: 0
pkg:composer/hackeresq/filter-models
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(); } }