目录
▸
入门
简介
安装
1.x升级指南
版本升级
快速开始
开发前必读
主题与颜色
静态资源
视图与自定义页面
多应用(多后台)
JS组件
常见问题
Laravel Octane
▸
数据表格
基本使用
列的使用和扩展
列的显示和扩展
行的使用和扩展
工具栏
树状表格
组合表头
数据来源以及查询条件
关联关系
查询过滤
列过滤器
快捷搜索
规格筛选器
数据导出
快捷创建
行内编辑
事件
字段翻译
数据软删除
头部和脚部
表格异步渲染
▸
数据表单
基本使用
图片/文件上传
字段的使用
字段扩展
数据源
表单弹窗
关联关系
JSON表单
分步表单
表单验证
工具表单
事件以及表单响应
初始化
表单布局
字段翻译
字段动态显示
▸
数据详情
基本使用
字段显示
关联关系
字段显示扩展
初始化
字段翻译
▸
模型树
基本使用
▸
数据仓库
基本使用
▸
动作
基本使用
数据表格
数据表单
数据详情
模型树
▸
多语言
基本使用
▸
开发扩展
扩展基本使用
开发扩展
▸
页面组件
异步加载
图表
数据统计卡片
模态窗(Modal)
工具表单
下拉菜单
单/复选框
选项卡
警告框
提示窗
Markdown
卡片
▸
区块
区块基本使用
▸
动作以及表单响应
动作以及表单响应
▸
权限控制
权限控制
▸
菜单
菜单基本使用
▸
帮助函数
帮助函数
▸
开发工具
基本使用
▸
自定义登陆认证
自定义登录
▸
自定义头部导航
自定义头部导航条
▸
更新日志
BETA版本更新日志
更新日志
内容导航
1.x
2.x
列过滤器
创建时间:2024-06-26 10:52:53 / 更新时间:2024-06-26 10:52:53
# 列过滤器 这个功能可以给表格的列设置一个过滤器,可以更方便的根据这一列进行数据表格过滤操作 ![](http://docs.oneself.icu:10010/storage/markdown/images/d3cd06a56a46e5fec0e05a8fe8b2f455667b8248b315c.png) ## 字符串比较查询 ```php use Dcat\Admin\Grid; // WHERE `username` = "$input" $grid->username->filter( Grid\Column\Filter\Equal::make() ); ``` 上面的调用可以给 `username` 这一列的头部加上一个 `input` 类型的过滤器,点击过滤器图标展开过滤器,输入查询提交后,会对这一列执行 `等于` 查询。 ### 开启字段值查询 这个功能可以给每一列字段的值设置一个过滤器,点击该列字段的值就可以进行数据表格过滤操作,非常方便。 > 开启此功能之后会把这个字段的原始值作为搜索内容,不会受 `display` 方法影响。 ```php use Dcat\Admin\Grid; // 设置为 label 或调用 display 方法不会影响查询内容 $grid->ip->label()->filter(); // 相当于 $grid->ip->filter( Grid\Column\Filter\Equal::make()->valueFilter() ); ``` 鼠标移动到开启了值查询功能的列上面,右边会显示一个`放大镜`图标 ![](http://docs.oneself.icu:10010/storage/markdown/images/8343fc06d78aa06ff14e9ff9c6c32ce5667b82556f919.png) 点击列之后,表头会出现`重置`按钮,点击可以取消筛选 ![](http://docs.oneself.icu:10010/storage/markdown/images/e87e90b4fea92e8b0384e30274289237667b8260c73a8.png) #### 设置值的字段名称 如果当前列的值并非用户想要搜索的值,可以通过以下方法更改字段名称。 ```php $grid->model()->with('user'); // 实际搜索的会是 name 字段的值 $grid->username->filter('name'); // 二维数组 $grid->user_id->filter('user.id'); // 闭包 $grid->user_id->filter(function () { return $this->user['id']; }); ``` #### 隐藏表头的筛选器图标 ```php use Dcat\Admin\Grid; $grid->user_id->filterByValue(); // 相当于 $grid->user_id->filter( Grid\Column\Filter\Equal::make() ->valueFilter() ->hide() ); ``` 效果如下 ![](http://docs.oneself.icu:10010/storage/markdown/images/637c62fa6bee8f7b4402fb9fb9923314667b826caa156.png) ### 其余Input表单类型过滤器 ```php use Dcat\Admin\Grid; // WHERE `username` LIKE "%{$input}%" $grid->username->filter( Grid\Column\Filter\Like::make() ); // WHERE `username` LIKE "{$input}%" $grid->username->filter( Grid\Column\Filter\StartWith::make() ); // WHERE `username` > "$input" $grid->username->filter( Grid\Column\Filter\Gt::make() ); // WHERE `username` <= "$input" $grid->username->filter( Grid\Column\Filter\Ngt::make() ); // WHERE `username` < "$input" $grid->username->filter( Grid\Column\Filter\Lt::make() ); // WHERE `username` >= "$input" $grid->username->filter( Grid\Column\Filter\Nlt::make() ); ``` ### 时间日期 如果字段是时间、日期相关的字段,可以使用下面的方法 ```php use Dcat\Admin\Grid; $grid->date()->filter( Grid\Column\Filter\Equal::make()->date() ); $grid->time()->filter( Grid\Column\Filter\Like::make()->time() ); $grid->datetime()->filter( Grid\Column\Filter\Gt::make()->datetime('YYYY-MM-DD HH:mm:ss') ); ``` ## 多选查询 假设需要在表格数据中通过 `status` 字段过滤一个或者多个状态的数据,使用多选过滤可以非常方便的实现 ```php use Dcat\Admin\Grid; $grid->column('status', '状态')->filter( Grid\Column\Filter\In::make([ 0 => '未知', 1 => '已下单', 2 => '已付款', 3 => '已取消', ]) ); ``` ## 范围查询 假设需要通过 `price` 字段过滤出某个价格范围内的数据 ```php $grid->column('price')->filter( Grid\Column\Filter\Between::make() ); ``` 或者是时间、日期范围的过滤 ```php use Dcat\Admin\Grid; $grid->date()->filter( Grid\Column\Filter\Between::make()->date() ); $grid->time()->filter( Grid\Column\Filter\Between::make()->time() ); $grid->datetime()->filter( Grid\Column\Filter\Between::make()->datetime() ); ``` ## 指定查询字段名 通过`setColumnName`方法可以指定查询字段的名称 ```php $grid->column('column')->filter( Grid\Column\Filter\Equal::make()->setColumnName('custom_column') ); ``` ### 查询json字段 > Since `v1.7.0` ```php $grid->column('column')->filter( Grid\Column\Filter\Equal::make()->setColumnName('json_column->label') ); ``` ### 关联关系字段查询 > Since `v1.7.0` 如果安装了 [dcat/laravel-wherehasin](https://github.com/jqhph/laravel-wherehasin),则会优先使用`whereHasIn`方法进行查询操作 ```php $grid->column('user.name')->filter( Grid\Column\Filter\Equal::make() ); $grid->column('user_name')->filter( Grid\Column\Filter\Equal::make()->setColumnName('user.name') ); ```
上一文章
下一文章
返回顶部
返回主页
返回文档展示页