添加表头筛选条件
addFilterMap('字段名' [, '查询条件'])
点击筛选图标时,系统会去获取该字段的所有数据,默认是没有添加任何筛选条件的,如果想在获取字段数据的时加上查询条件,可以这样做。
// 使用ZBuilder构建数据表格return ZBuilder::make('table')->addFilter('id,username') // 添加筛选->addFilterMap('id', ['group' => 'cms']) // 只获取group等于cms的id字段信息->fetch();
也可以使用>、<、eq、gt、egt等关键字,和ThinkPHP的用法一致
// 使用ZBuilder构建数据表格return ZBuilder::make('table')->addFilter('id,username') // 添加筛选->addFilterMap('id', ['status' => ['>=', 10]]) // 只获取status大于等于10的id字段->fetch();
如果多个字段的限定条件是相同的,也可以写在一起,字段之间用逗号隔开
// 使用ZBuilder构建数据表格return ZBuilder::make('table')->addFilter('id,username') // 添加筛选->addFilterMap('id,username', ['status' => ['>=', 10]]) // 只获取status大于等于10的id字段->fetch();
如果所有字段都需要用到相同的限定条件,那么可以干脆把条件写到addFilter方法的第二个参数,不用添加addFilterMap方法。
// 使用ZBuilder构建数据表格return ZBuilder::make('table')->addFilter('id,username', ['status' => ['>=', 10]]) // 添加筛选并限定条件->fetch();
如果某字段的限定条件已经定义过,想对该字段额外增加条件也可以,比如上面的例子,我希望获取username字段信息的时候,不仅要group等于cms,还要求status大于0,只需接着对该字段添加限定条件。
// 使用ZBuilder构建数据表格return ZBuilder::make('table')->addFilter('id,username') // 添加筛选->addFilterMap('id,username', ['group' => 'cms'])->addFilterMap('username', ['status' => ['>', 0]])->fetch();
除此之外,也可以把条件都定义好,直接以数组形式传入,以上的代码和下面的效果是相同的。
$filter_map = ['id,username' => ['group' => 'cms'],'username' => ['status' => ['>', 0]]];// 使用ZBuilder构建数据表格return ZBuilder::make('table')->addFilter('id,username') // 添加筛选->addFilterMap($filter_map)->fetch();
或者这样
$filter_map = ['id' => ['group' => 'cms'],'username' => ['group' => 'cms', 'status' => ['>', 0]]];// 使用ZBuilder构建数据表格return ZBuilder::make('table')->addFilter('id,username') // 添加筛选->addFilterMap($filter_map)->fetch();
与其他筛选字段联动
从1.0.3版本开始,当addFilterMap的第二个参数是字符串时,表示与其他字段筛选进行联动
比如,我们添加了省份筛选和城市筛选,一般是这样写的
// 使用ZBuilder构建数据表格return ZBuilder::make('table')->addFilter('province', $list_province) // $list_province 是用于将省份id转为省份名称->addFilter('city', $list_city) // $list_city 是用于将城市id转为城市名称->fetch();
但是我们假如想实现当用户筛选“广东”省时,点击城市筛选只会出现属于广东省的城市列表,那么我们可以这么写
// 使用ZBuilder构建数据表格return ZBuilder::make('table')->addFilter('province', $list_province) // $list_province 是用于将省份id转为省份名称->addFilter('city', $list_city) // $list_city 是用于将城市id转为城市名称->addFilterMap('city', 'province')->fetch();
当用户点击筛选城市时,框架会把当前选择的省份一起传到服务器进行查询。
