Filterable — це пакет Laravel від Jerome Thayananthajothy , який покращує запити Laravel за допомогою адаптивних, настроюваних фільтрів та інтелектуального кешування для покращення як продуктивності, так і функціональності.
До основних особливостей цього пакету можна віднести:
- Динамічна фільтрація: легко застосовуйте фільтри на основі параметрів запиту.
- Кешування: підвищення продуктивності за рахунок кешування результатів запитів.
- Фільтрація для конкретного користувача: легко впроваджуйте фільтри, які залежать від автентифікованого користувача.
- Користувацькі методи фільтрування: розширте клас, щоб додати власні методи фільтрації.
Визначення класів Filter знаходиться в центрі цього пакету, де ви можете створювати методи, які можуть застосовувати фільтрацію до Eloquent запитів. Пакет містить команду make:filter
Artisan для створення фільтра App\Filters
в просторі імен вашого додатку. Ось приклад фільтра з README:
namespace App\Filters;
use Filterable\Filter;
use Illuminate\Database\Eloquent\Builder;
class PostFilter extends Filter
{
protected array $filters = ['status', 'category'];
protected function status(string $value): Builder
{
return $this->builder->where('status', $value);
}
protected function category(int $value): Builder
{
return $this->builder->where('category_id', $value);
}
}
Задано , PostFilter
ви можете використовувати цей клас у контролері з Post
моделлю для фільтрації моделей на основі параметрів запиту HTTP:
public function index(Request $request, PostFilter $filter)
{
// i.e., /posts?status=active&category_id=2
$query = Post::filter($filter);
$posts = $request->has('paginate')
? $query->paginate($request->query('per_page', 20))
: $query->get();
return response()->json($posts);
}
Ви можете дізнатися більше про цей пакунок, отримати повні інструкції зі встановлення та переглянути вихідний код на GitHub.