• Час читання ~1 хв
  • 30.04.2024

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.

Comments

No comments yet
Yurij Finiv

Yurij Finiv

Full stack

Про мене

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...

Про автора CrazyBoy49z
WORK EXPERIENCE
Контакти
Ukraine, Lutsk
+380979856297