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(); // 渲染页面
可以看到,由于$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 setTestAttr()
{
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(); // 渲染页面