我的应用程序支持使用过滤器获取数据。
Model::select($fields)->with($relations)->tap(function ($query) use ($filters) {
// A lot of filtering logic here
// $query->where()......
})->get();
字符串
然而,我想把过滤逻辑直接移到模型中,这样我就可以
Model::select($fields)
->with($relations)
->applyFilters($filters)
->get();
型
我尝试在Model
中添加一个filter
方法,但是在使用Builder
时,它无法识别我的函数:
调用未定义的方法Illuminate\Database\Eloquent\Builder::applyFilters()
除了创建一个新的构建器类并使用它之外,还有更简单的方法吗?
2条答案
按热度按时间e4eetjau1#
我想出来了!我只需要在
Model
类中添加一个scopeApplyFilters
。字符串
然后我可以用
Model::applyFilters($filters);
调用它x4shl7ld2#
字符串