addOrder("字段名")
如果有些字段需要排序功能,可以使用addOrder方法,将需要排序的字段名填写进去,多个字段用逗号隔开。
// 读取用户数据
$data_list = Db::name("admin_user")->select();
// 使用ZBuilder构建数据表格
return ZBuilder::make("table")
->addOrder("id,username") // 添加排序
->addColumn("id", "ID")
->addColumn("username", "用户名")
->addColumn("nickname", "昵称")
->addColumn("email", "邮箱")
->addColumn("mobile", "手机号")
->addColumn("create_time", "创建时间")
->setRowList($data_list) // 设置表格数据
->fetch();
添加好排序字段后,还需要在查询数据之前获取排序的数据,使用$this->getOrder()
即可。
// 获取排序
$order = $this->getOrder();
// 读取用户数据
$data_list = Db::name("admin_user")->order($order)->select();
// 使用ZBuilder构建数据表格
return ZBuilder::make("table")
->addOrder("id,username") // 添加排序
->addColumn("id", "ID")
->addColumn("username", "用户名")
->addColumn("nickname", "昵称")
->addColumn("email", "邮箱")
->addColumn("mobile", "手机号")
->addColumn("create_time", "创建时间")
->setRowList($data_list) // 设置表格数据
->fetch();
注意:默认情况下,添加排序的字段是当前数据表真实存在的字段名,如果使用视图查询的数据,需要指定数据表。
getOrder()
方法除了可以获取排序数据外,还可以添加额外的排序字段,比如:
// 获取排序,并添加额外排序字段
$order = $this->getOrder("id desc,sort");
默认情况下,新增的额外排序字段会放在其他排序字段的后面,如果希望额外排序字段的优先级更高,可以把额外的排序字段前置。
// 获取排序,并将额外排序字段前置
$order = $this->getOrder("id desc,sort", true);
使用数组形式
// 使用ZBuilder构建数据表格
return ZBuilder::make("table")
->addOrder(["id","username"]) // 添加排序
->fetch();
指定其他表的字段
如果数据是从视图查询得到的,即包含了多张表的情况,那么需指定数据表名,格式为:表名.字段名,没有指定表名的字段默认在当前表查询。
// 使用ZBuilder构建数据表格
return ZBuilder::make("table")
->addOrder("admin_action.username,nickname") // 添加排序
->fetch();
也可以用数组的方式写,格式为"字段名" => "表名"
// 使用ZBuilder构建数据表格
return ZBuilder::make("table")
->addOrder(["title" => "admin_action", "username"]) // 添加排序
->fetch();
如果设置的字段别名,也可以指定其他表,并且指定其他字段名,格式为:字段别名 => "表名.字段名"
// 使用ZBuilder构建数据表格
return ZBuilder::make("table")
->addOrder(["module_title" => "admin_module.title"]) // 添加排序
->fetch();
其中module_title
是字段别名。
具体使用请参考系统的“日志管理”源码。