philperusse / nova-column-filter
Laravel Nova 列查询器过滤器
v0.3.0
2019-02-25 14:02 UTC
Requires
- php: >=7.1.0
- laravel/nova: >=1.3.2
README
适用于 Nova > v1.1.8 的 Laravel Nova 列查询器过滤器
在 Nova v.1.3.2 之前,使用 0.2.1 版本。
在 Nova v.1.1.8 之前,使用 0.1.1 版本。
演示
安装
在您的 Laravel Nova 项目中运行此命令
composer require philperusse/nova-column-filter
用法
使用 artisan
创建过滤器
$ php artisan nova:filter UserColumnFilter
使用 ColumnFilter 类扩展您的过滤器类,而不是 Nova 的基础 Filter 类,并在选项中添加您希望过滤的列
use \philperusse\Filters\ColumnFilter as Filter; class ColumnFilter extends Filter { /** * Apply the filter to the given query. * * @param \Illuminate\Http\Request $request * @param \Illuminate\Database\Eloquent\Builder $query * @param mixed $value * @return \Illuminate\Database\Eloquent\Builder */ public function apply( Request $request, $query, $value ) { $args = collect($value)->values()->filter(); //Remove any empty keys. if($args->isEmpty()) return $query; return $query->where(...$args->all()); } /** * Get the filter's available options. * * @param \Illuminate\Http\Request $request * @return array */ public function options( Request $request ) : array { return array_merge(parent::options($request), [ 'columns' => [ 'name' => 'Name', 'age' => 'Age', ] ]); } }
自定义
您可以通过覆盖 filters 选项中的 operators
键来自定义运算符列表。
use philperusse\Filters\ColumnFilter as Filter; class ColumnFilter extends Filter { public function options( Request $request ) { return array_merge(parent::options($request), [ 'columns' => [ 'name' => 'Name', 'age' => 'Age', ], 'operators' => [ '=' => '=', '>' => '>', '>=' => '≥', '<' => '<', '<=' => '≤', ] ]); } protected function componentName() { return 'column-filter'; } }
贡献
欢迎所有贡献。请发送 PR
作者
- Philippe Pérusse philippe.perusse@outlook.com
该过滤器基于 64Robots 的日期过滤器 和其 自定义过滤器选择组件
许可证
此软件包是开源软件,根据 MIT 许可证 许可。