danilpetrenko / eloquent-query-filter
用于简单查询筛选的包
v1.0.1
2023-12-12 01:42 UTC
Requires
- php: >=8.0
- illuminate/collections: v10.*
- illuminate/database: v10.*
- illuminate/support: v10.*
README
本包旨在快速便捷地管理应用中的筛选功能。
用法
前往您的模型,添加use HasFilter;
特性,以便您可以在任何地方注入筛选逻辑。
通过Laravel作用域,此特性添加了简单的方法来注入筛选器,例如:
- 单个筛选器:
User::useFilter(ActiveFilter::class)->first();
- 筛选器数组:
User::useFilters([ActiveFilter::class, IsAdminFilter::class])->first();
- 筛选器仓库:
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()方法。
作为返回,您应提供筛选器类列表。