乌鸦嘴文档 乌鸦嘴文档
乌鸦嘴社区 (opens new window)
乌鸦嘴社区 (opens new window)
  • 入门

  • 数据列表

    • 表格基本使用
    • 列的基本使用
    • 列的显示和扩展
    • 行的使用和扩展
    • 工具栏
    • 树状表格
    • 组合表头
    • 表格数据源
    • 表格关联关系
    • 查询过滤
    • 列过滤器
      • 字符串比较查询
        • 开启字段值查询
        • 其余Input表单类型过滤器
        • 时间日期
      • 多选查询
      • 范围查询
      • 指定查询字段名
        • 查询json字段
        • 关联关系字段查询
    • 表格快捷搜索
    • 表格规格筛选器
    • 数据导出
    • 快捷创建
    • 数据表格行内编辑
    • 数据表格事件
    • 表格字段翻译
    • 数据软删除
    • 头部和脚部
    • 表格异步渲染
  • 数据表单

  • 数据详情

  • 模型树

  • 数据仓库

  • 动作

  • 多语言

  • 开发扩展

  • 页面组件

  • 区块

  • 动作以及表单相应

  • 权限控制

  • 菜单

  • 帮助函数

  • 开发工具

  • 自定义登陆

  • 自定义头部导航

  • 更新日志

目录

列过滤器

# 列过滤器

这个功能可以给表格的列设置一个过滤器,可以更方便的根据这一列进行数据表格过滤操作

# 字符串比较查询

use Dcat\Admin\Grid;

// WHERE `username` = "$input"
$grid->username->filter(
    Grid\Column\Filter\Equal::make()
);

上面的调用可以给 username 这一列的头部加上一个 input 类型的过滤器,点击过滤器图标展开过滤器,输入查询提交后,会对这一列执行 等于 查询。

# 开启字段值查询

这个功能可以给每一列字段的值设置一个过滤器,点击该列字段的值就可以进行数据表格过滤操作,非常方便。

提示

开启此功能之后会把这个字段的原始值作为搜索内容,不会受 display 方法影响。

use Dcat\Admin\Grid;

// 设置为 label 或调用 display 方法不会影响查询内容
$grid->ip->label()->filter();

// 相当于
$grid->ip->filter(
    Grid\Column\Filter\Equal::make()->valueFilter()
);

鼠标移动到开启了值查询功能的列上面,右边会显示一个“放大镜”图标

点击列之后,表头会出现“重置”按钮,点击可以取消筛选

# 设置值的字段名称

如果当前列的值并非用户想要搜索的值,可以通过以下方法更改字段名称。

$grid->model()->with('user');

// 实际搜索的会是 name 字段的值
$grid->username->filter('name');

// 二维数组
$grid->user_id->filter('user.id');

// 闭包
$grid->user_id->filter(function () {
    return $this->user['id'];
});

# 隐藏表头的筛选器图标

use Dcat\Admin\Grid;

$grid->user_id->filterByValue();

// 相当于
$grid->user_id->filter(
    Grid\Column\Filter\Equal::make()
        ->valueFilter()
        ->hide()
);

效果如下

# 其余Input表单类型过滤器

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()
);

# 时间日期

如果字段是时间、日期相关的字段,可以使用下面的方法

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 字段过滤一个或者多个状态的数据,使用多选过滤可以非常方便的实现

use Dcat\Admin\Grid;

$grid->column('status', '状态')->filter(
    Grid\Column\Filter\In::make([
        0 => '未知',
        1 => '已下单',
        2 => '已付款',
        3 => '已取消',
    ])
);

# 范围查询

假设需要通过 price 字段过滤出某个价格范围内的数据

$grid->column('price')->filter(
    Grid\Column\Filter\Between::make()
);

或者是时间、日期范围的过滤

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方法可以指定查询字段的名称

$grid->column('column')->filter(
    Grid\Column\Filter\Equal::make()->setColumnName('custom_column')
);

# 查询json字段

$grid->column('column')->filter(
    Grid\Column\Filter\Equal::make()->setColumnName('json_column->label')
);

# 关联关系字段查询

如果安装了 dcat/laravel-wherehasin (opens new window),则会优先使用whereHasIn方法进行查询操作

$grid->column('user.name')->filter(
    Grid\Column\Filter\Equal::make()
);

$grid->column('user_name')->filter(
    Grid\Column\Filter\Equal::make()->setColumnName('user.name')
);
查询过滤
表格快捷搜索

← 查询过滤 表格快捷搜索→

Theme by Vdoing | Copyright © 2020-2022 wyz.xyz 宁ICP备15001739号-5
  • 跟随系统
  • 浅色模式
  • 深色模式
  • 阅读模式
×