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.