Filterable to pakiet Laravela autorstwa Jerome'a Thayananthajothy'ego , który ulepsza zapytania Laravel o adaptowalne, konfigurowalne filtry i inteligentne buforowanie w celu poprawy zarówno wydajności, jak i funkcjonalności.
Główne cechy tego pakietu to:
- Filtrowanie dynamiczne: Z łatwością stosuj filtry na podstawie parametrów żądania.
- Buforowanie: Zwiększ wydajność, buforując wyniki zapytania.
- Filtrowanie specyficzne dla użytkownika: Łatwe implementowanie filtrów zależnych od uwierzytelnionego użytkownika.
- Niestandardowe metody filtrowania: Rozszerz klasę, aby dodać własne metody filtrowania.
Definiowanie klas filtrów znajduje się w centrum tego pakietu, w którym można tworzyć metody, które mogą stosować filtrowanie do zapytań elokwentnych. Pakiet zawiera make:filter
polecenie Artisan służące do generowania filtru w przestrzeni nazw aplikacji App\Filters
. Oto przykład filtru z pliku README pakietu:
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);
}
}
Biorąc pod PostFilter
uwagę , możesz użyć tej klasy w kontrolerze z Post
modelem do filtrowania modeli na podstawie parametrów zapytania 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);
}
Możesz dowiedzieć się więcej o tym pakiecie, uzyskać pełne instrukcje instalacji i wyświetlić kod źródłowy w witrynie GitHub.