## 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(); ~~~ ###与其他筛选字段联动 >[info]从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(); ~~~ 当用户点击筛选城市时,框架会把当前选择的省份一起传到服务器进行查询。