sedehi / filterable
Installs: 11 844
Dependents: 0
Suggesters: 0
Security: 0
Stars: 5
Watchers: 3
Forks: 1
Open Issues: 0
Requires
- hekmatinasser/verta: ^8.3
- illuminate/support: >=9.0
- nesbot/carbon: >=2.65
Requires (Dev)
- laravel/pint: ^1.0
- nunomaduro/collision: ^6.0
- nunomaduro/larastan: ^2.0.1|1.0.3
- orchestra/testbench: ^7.0|^8.0
- phpstan/extension-installer: ^1.1
- phpstan/phpstan-deprecation-rules: ^1.0
- phpstan/phpstan-phpunit: ^1.0
- phpunit/phpunit: ^9.5
README
Introduction
The Sedehi/Filterable
package is designed for performing searches on models based on query strings found in requests. It allows you to easily filter model data according to the query parameters provided in HTTP requests.
Installation
To get the latest version, simply require the project using Composer:
composer require sedehi/filterable
If you are using Laravel >=5.5 the service provider will be automatically discovered otherwise we need to add the filterable service provider to config/app.php
under the providers key:
Sedehi\Filterable\FilterableServiceProvider::class,
Usage
The first step in using the Sedehi/Filterable package in your Laravel application is to add the Sedehi\Filterable\Filterable
trait to any model on which you want to perform filtering.
Below is an example of a model with the Filterable trait:
<?php namespace App\Models; use Sedehi\Filterable\Filterable; use Illuminate\Database\Eloquent\Model; class Product extends Model { use Filterable; public $filterable = [ 'title', ]; // Your model's other properties and methods go here... }
Applying Filtering in Queries
Finally, to apply filtering in any query where you need to execute filterable, add the filter
scope as follows:
Product::filter()->where('active', 1)->get();
Defining Filterable Fields
To specify which fields can be filtered and the type of search operation available on those fields, you need to define an array named $filterable
within your model. In this array, you list the names of the fields that should be filterable and specify the filter operation for each field.
In the example above, we have defined that the 'title' field can be filtered.
You can add more fields to the $filterable
array as needed for your model.
Here's a guide on how to filter data using the filterable feature:
$filterable = [ 'title', ]; $request = ['title' => 'some text']
SQL Output:
SELECT * from product where `title` = 'some text'