yii2.0表格如何排序
发布时间 - 2019-12-09 00:00:00 点击率:次在Yii2.0项目的实际开发中,经常会遇到使用Yii2.0自带的排序功能。
展示多条数据时,通常需要对数据按照用户指定的列进行排序。 Yii 使用 yii\data\Sort 对象来代表排序方案的有关信息。 特别地:
1、attributes 指定 属性,数据按照其排序。 一个属性可以就是简单的一个 model attribute, 也可以是结合了多个 model 属性或者 DB 列的复合属性。下面将给出更多细节。
2、attributeOrders 给出每个属性当前设置的 排序方向。
3、orders 按照低级列的方式给出排序方向。
使用 yii\data\Sort,首先要声明什么属性能进行排序。 接着从 attributeOrders 或者 orders 取得当前设置的排序信息, 然后使用它们来自定义数据查询。
(推荐学习:yii框架)
下面是排序功能的具体使用方法:
一、设置排序规则
注意引入Sort类,如:use yii\data\Sort;
// 设置排序字段
$sortObject = new Sort([
'sort' => $sort,
'defaultOrder' => ['id' => SORT_DESC],
'attributes' => [
'id' => [
'asc' => ['id' => SORT_ASC],
'desc' => ['id' => SORT_DESC],
],
'user_name' => [
'asc' => ['ecs_users.user_name' => SORT_ASC],
'desc' => ['ecs_users.user_name' => SORT_DESC],
],
'add_time' => [
'asc' => ['add_time' => SORT_ASC],
'desc' => ['add_time' => SORT_DESC],
],
],
]);二、使用Yii2.0自带分页功能并加入排序
// 处理分页
$queryClone = clone $query;
$totalCount = $queryClone->count();
$pages = new Pagination(['defaultPageSize'=>$rows,'totalCount'=>$totalCount,'pageSizeLimit'=>false]);
$query = $query->offset($offset)
->limit($pages->limit)
->orderBy($sortObject->orders)
->asArray()
->all();三、修改Yii2.0排序底层代码
底层对应源码:vendor/yiisoft/yii2.0/data/Sort.php
1.为Sort类增加一个属性:public $sort;
2.在源码大约249行加入以下代码:(实现post获取分页参数)
// get请求获取数组为空,则调用自定义属性sort。用于满足post获取后处理自定义参数
if(!isset($params[$this->sortParam])){
$params[$this->sortParam] = $this->sort;
}3.在控制器中接收分页参数,如下:
$sort = $_POST['sort'] ? strval($_POST['sort']) : 'id'; $sort = $_POST['order'] == 'asc' ? $sort : '-'.$sort;
注意:Yii2.0中id代表按
照id正序排序,-id代表按照id逆序排序。这也是上面语句2为什么要那么处理的原因。
# sort
# public
# Attribute
# 对象
# YII
# 分页
# 自定义
# 自带
# 多个
# 经常会
# 多条
# 将给
# 为空
# 数据查询
# 后处理
相关栏目:
【
网站优化151355 】
【
网络推广146373 】
【
网络技术251813 】
【
AI营销90571 】
相关推荐:
Laravel如何使用Telescope进行调试?(安装和使用教程)
如何快速使用云服务器搭建个人网站?
JavaScript Ajax实现异步通信
Laravel如何实现文件上传和存储?(本地与S3配置)
Laravel如何使用Service Container和依赖注入?(代码示例)
如何用腾讯建站主机快速创建免费网站?
Laravel如何使用.env文件管理环境变量?(最佳实践)
🚀拖拽式CMS建站能否实现高效与个性化并存?
Edge浏览器怎么启用睡眠标签页_节省电脑内存占用优化技巧
深圳网站制作公司好吗,在深圳找工作哪个网站最好啊?
UC浏览器如何切换小说阅读源_UC浏览器阅读源切换【方法】
laravel怎么在请求结束后执行任务(Terminable Middleware)_laravel Terminable Middleware请求结束任务执行方法
html5的keygen标签为什么废弃_替代方案说明【解答】
利用 Google AI 进行 YouTube 视频 SEO 描述优化
中山网站推广排名,中山信息港登录入口?
如何快速搭建高效简练网站?
,交易猫的商品怎么发布到网站上去?
Laravel如何实现API资源集合?(Resource Collection教程)
Laravel如何发送邮件_Laravel Mailables构建与发送邮件的简明教程
php在windows下怎么调试_phpwindows环境调试操作说明【操作】
东莞市网站制作公司有哪些,东莞找工作用什么网站好?
Laravel用户密码怎么加密_Laravel Hash门面使用教程
如何制作新型网站程序文件,新型止水鱼鳞网要拆除吗?
极客网站有哪些,DoNews、36氪、爱范儿、虎嗅、雷锋网、极客公园这些互联网媒体网站有什么差异?
Laravel定时任务怎么设置_Laravel Crontab调度器配置
Laravel项目如何进行性能优化_Laravel应用性能分析与优化技巧大全
最好的网站制作公司,网购哪个网站口碑最好,推荐几个?谢谢?
Laravel如何与Docker(Sail)协同开发?(环境搭建教程)
免费网站制作appp,免费制作app哪个平台好?
如何在自有机房高效搭建专业网站?
php后缀怎么变mp4格式错误_修改扩展名提示格式不对怎么办【技巧】
Laravel如何优雅地处理服务层_在Laravel中使用Service层和Repository层
EditPlus中的正则表达式 实战(1)
JS经典正则表达式笔试题汇总
Laravel如何处理JSON字段_Eloquent原生JSON字段类型操作教程
公司门户网站制作公司有哪些,怎样使用wordpress制作一个企业网站?
网站制作大概要多少钱一个,做一个平台网站大概多少钱?
如何快速查询网址的建站时间与历史轨迹?
微信推文制作网站有哪些,怎么做微信推文,急?
利用vue写todolist单页应用
手机怎么制作网站教程步骤,手机怎么做自己的网页链接?
Windows10如何删除恢复分区_Win10 Diskpart命令强制删除分区
悟空识字怎么关闭自动续费_悟空识字取消会员自动扣费步骤
Laravel怎么实现软删除SoftDeletes_Laravel模型回收站功能与数据恢复【步骤】
如何快速搭建虚拟主机网站?新手必看指南
Laravel路由怎么定义_Laravel核心路由系统完全入门指南
微信小程序 闭包写法详细介绍
怎么制作网站设计模板图片,有电商商品详情页面的免费模板素材网站推荐吗?
Laravel如何使用Facades(门面)及其工作原理_Laravel门面模式与底层机制
HTML透明颜色代码在Angular里怎么设置_Angular透明颜色使用指南【详解】

