danilpetrenko/eloquent-query-filter

用于简单查询筛选的包

v1.0.1 2023-12-12 01:42 UTC

This package is auto-updated.

Last update: 2024-09-12 03:33:32 UTC


README

本包旨在快速便捷地管理应用中的筛选功能。

用法

前往您的模型,添加use HasFilter;特性,以便您可以在任何地方注入筛选逻辑。

通过Laravel作用域,此特性添加了简单的方法来注入筛选器,例如:

  1. 单个筛选器:User::useFilter(ActiveFilter::class)->first();
  2. 筛选器数组:User::useFilters([ActiveFilter::class, IsAdminFilter::class])->first();
  3. 筛选器仓库:User::useFiltersRepository(UserFiltersRepository::class)->first();

每个筛选器都必须扩展Filter类并实现run()方法。
run()方法应始终返回Builder实例,并且可以使用$mode来检查模型的列,例如。

public function run(Builder $query, Model $model): Builder
{
    return $query->where('active', true);
}

您还可以使用$this->parameters字段有条件地筛选模型。

筛选器仓库

您可以为筛选器创建仓库,该仓库扩展FiltersRepository类并实现getFilters()方法。
作为返回,您应提供筛选器类列表。