• Время чтения ~1 мин
  • 02.03.2023

Laravel Model Filter предлагает простой способ фильтрации и поиска красноречивых моделей по параметрам массива и строкам запроса.

Вот простой пример, чтобы проиллюстрировать, как именно работает этот пакет. При следующем фильтре можно создать фильтр с помощью предоставленной команды make:filter:

namespace App\Models\Filters;

use Lacodix\LaravelModelFilter\Filters\DateFilter;

class CreatedAfterFilter extends DateFilter
{
    public FilterMode $mode = FilterMode::GREATER_OR_EQUAL;

    protected string $field = 'created_at';
}

Можно применить CreatedAfterFilter к модели, подобной приведенному в следующем примере:

namespace App\Models;

use App\Models\Filters\CreatedAfterFilter;
use Illuminate\Database\Eloquent\Model;
use Lacodix\LaravelModelFilter\Traits\HasFilters;

class Post extends Model
{
    use HasFilters;

    protected array $filters = [
        CreatedAfterFilter::class,
    ];
}

Затем можно запустить фильтр либо программно, либо с помощью строки запроса:

Post::filter(['created_after_filter' => '2023-01-01'])->get();

// Multiple filters
Post::filter([
    'created_after_filter' => '2023-01-01',
    'published_filter' => true,
])->get();

// Or by query string: /posts?created_after_filter=2023-01-01
Post::filterByQueryString()->get();

Этот пакет включает в себя множество функций, связанных с моделями фильтрации, таких как:

  • Проверка
  • фильтрации фильтра группы
  • Сортировка
  • Тип фильтра даты
  • Поиск Тип фильтра Строковый фильтр
  • Выбрать тип фильтра Выбрать тип
  • фильтра Числовой тип
  • фильтра Тип логического фильтра
  • Тип фильтра Корзина Фильтр
  • по связям
  • И многое другое

Чтобы начать работу с этим пакетом, ознакомьтесь с официальная документация; исходный код также находится на GitHub по адресу lacodix/laravel-model-filter.

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