## raw('字段名') 在创建数据表格时,如果数据是由模型获取的,且模型中定义了修改器和获取器,那么获取器会起作用,而修改器不起作用。 假设User模型定义了获取器和修改器,以下代码仅作为演示,不需要深究为什么这么写。 ~~~ // username字段的获取器 public function getUsernameAttr($v) { return '用户:'.$v; } // username字段的修改器 public function setUsernameAttr() { return 123; } ~~~ 创建数据表格 ~~~ // 数据列表 $data_list = User::where($map)->order('sort,id desc')->paginate(); // 使用ZBuilder快速创建数据表格 return ZBuilder::make('table') ->setTableName('admin_user') // 设置数据表名 ->setSearch(['id' => 'ID', 'username' => '用户名', 'email' => '邮箱']) // 设置搜索参数 ->addColumns([ // 批量添加列 ['id', 'ID'], ['username', '用户名'], ['nickname', '昵称'], ['nickname', '昵称', 'text.edit'], ['email', '邮箱'], ['mobile', '手机号'], ['create_time', '创建时间', 'datetime'], ['status', '状态', 'switch'], ['right_button', '操作', 'btn'] ]) ->addTopButtons('add,enable,disable,delete') // 批量添加顶部按钮 ->addRightButton('custom', $btn_access) // 添加授权按钮 ->addRightButtons('edit,delete,enable,disable') // 批量添加右侧按钮 ->setRowList($data_list) // 设置表格数据 ->fetch(); // 渲染页面 ~~~ ![](https://box.kancloud.cn/e03a552c2c65fd37a6cfdee45bff4fa3_1553x158.png) 可以看到,由于$data_list使用自定义模型查询的,而且定义了获取器,所以最终显示的用户名,前面会显示‘用户:’。 ### 使用原值显示 有时候,虽然模型中定义了获取器,但我们不希望使用获取器,而是使用字段的原值来显示,或者使用原值来处理数据,那么就需要用到raw()方法,指定某个字段或某些字段使用原值。 ~~~ // 数据列表 $data_list = User::where($map)->order('sort,id desc')->paginate(); // 使用ZBuilder快速创建数据表格 return ZBuilder::make('table') ->setTableName('admin_user') // 设置数据表名 ->setSearch(['id' => 'ID', 'username' => '用户名', 'email' => '邮箱']) // 设置搜索参数 ->addColumns([ // 批量添加列 ['id', 'ID'], ['username', '用户名'], ['nickname', '昵称'], ['nickname', '昵称', 'text.edit'], ['email', '邮箱'], ['mobile', '手机号'], ['create_time', '创建时间', 'datetime'], ['status', '状态', 'switch'], ['right_button', '操作', 'btn'] ]) ->raw('username') // 使用原值 ->addTopButtons('add,enable,disable,delete') // 批量添加顶部按钮 ->addRightButton('custom', $btn_access) // 添加授权按钮 ->addRightButtons('edit,delete,enable,disable') // 批量添加右侧按钮 ->setRowList($data_list) // 设置表格数据 ->fetch(); // 渲染页面 ~~~ 由于定义了`->raw('username')`,最终表格上显示的username字段值将不会再经过获取器,而是直接显示原值。 ### 设置多个字段使用原值 ~~~ ->raw('username,nickname') 或者使用数组 ->raw(['username', 'nickname']) ~~~ ### 使用不存在的字段 如果模型中定义了获取器,并且该字段本身是不存在的,那么也需要用`raw()`方法设置,才能正常显示。 ~~~ // username字段的获取器 public function getUsernameAttr($v) { return '用户:'.$v; } // 定义一个不存在的字段获取器 public function getTestAttr() { return 123; } ~~~ ~~~ // 数据列表 $data_list = User::where($map)->order('sort,id desc')->paginate(); // 使用ZBuilder快速创建数据表格 return ZBuilder::make('table') ->setTableName('admin_user') // 设置数据表名 ->setSearch(['id' => 'ID', 'username' => '用户名', 'email' => '邮箱']) // 设置搜索参数 ->addColumns([ // 批量添加列 ['id', 'ID'], ['username', '用户名'], ['nickname', '昵称'], ['test', '测试'], ['nickname', '昵称', 'text.edit'], ['email', '邮箱'], ['mobile', '手机号'], ['create_time', '创建时间', 'datetime'], ['status', '状态', 'switch'], ['right_button', '操作', 'btn'] ]) ->raw('test') // 使用原值 ->addTopButtons('add,enable,disable,delete') // 批量添加顶部按钮 ->addRightButton('custom', $btn_access) // 添加授权按钮 ->addRightButtons('edit,delete,enable,disable') // 批量添加右侧按钮 ->setRowList($data_list) // 设置表格数据 ->fetch(); // 渲染页面 ~~~