• Czas czytania ~1 min
  • 30.04.2024

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 PostFilteruwagę , 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.

Comments

No comments yet
Yurij Finiv

Yurij Finiv

Full stack

O

Professional Fullstack Developer with extensive experience in website and desktop application development. Proficient in a wide range of tools and technologies, including Bootstrap, Tailwind, HTML5, CSS3, PUG, JavaScript, Alpine.js, jQuery, PHP, MODX, and Node.js. Skilled in website development using Symfony, MODX, and Laravel. Experience: Contributed to the development and translation of MODX3 i...

O autorze CrazyBoy49z
WORK EXPERIENCE
Kontakt
Ukraine, Lutsk
+380979856297