1. Go to this page and download the library: Download esign/laravel-query-filters library. Choose the download type require.
2. Extract the ZIP file and open the index.php.
3. Add this code to the index.php.
<?php
require_once('vendor/autoload.php');
/* Start to develop here. Best regards https://php-download.com/ */
esign / laravel-query-filters example snippets
use Esign\QueryFilters\Concerns\Filterable;
use Illuminate\Database\Eloquent\Model;
class Post extends Model
{
use Filterable;
}
use App\Models\Filters\TitleFilter;
use App\Models\Filters\BodyFilter;
Post::filter([
TitleFilter::class,
BodyFilter::class,
])->get();
use App\Models\Filters\TitleFilter;
use Closure;
use Illuminate\Database\Eloquent\Builder;
Post::filter([
// Class strings
TitleFilter::class,
// Class strings that pass a parameter to the handle method
TitleFilter::class . ':dogs',
// Class instance with a constructor parameter
new TitleFilter('dogs'),
// Use a callback
function (Builder $query, Closure $next): Builder {
$query->where('title', 'like', '%dogs%');
return $next($query);
},
])->get();
use App\Models\Filters\TitleFilter;
use Esign\QueryFilters\Concerns\Filterable;
use Illuminate\Database\Eloquent\Model;
class Post extends Model
{
use Filterable;
public function getFilters(): array
{
return [
TitleFilter::class,
];
}
}
Post::filter()->get();
namespace App\Models\Filters;
use Closure;
use Illuminate\Database\Eloquent\Builder;
use Illuminate\Http\Request;
class TitleFilter
{
public function __construct(protected Request $request)
{}
public function handle(Builder $query, Closure $next): Builder
{
$query->where('title', 'like', '%' . $this->request->query('search') . '%');
return $next($query);
}
}
use Esign\QueryFilters\Filters\MethodFilter;
use Illuminate\Database\Eloquent\Builder;
class PostFilter extends MethodFilter
{
public function title(mixed $value): Builder
{
return $this->query->where('title', 'like', "%$value%");
}
public function publishedAt(mixed $value): Builder
{
return $this->query->where('published_at', '=', $value);
}
}
Loading please wait ...
Before you can download the PHP files, the dependencies should be resolved. This can take some minutes. Please be patient.