详解Yii实现分页的两种方法


Posted in PHP onJanuary 14, 2017

Yii实现分页的两种方法,一种是用DAO实现,另外一种是在widget实现.

各有优点吧,第一种效率会高一点, 第二种可以使用自带的表格,方便一些.

一. DAO实现分页.

 [Controller层]

public function actionReport()
  {
    $sql = "select remitdate, sum(rate) sumrate from td_delivery 
      group by remitdate 
      order by remitdate desc";
    $criteria=new CDbCriteria();
    $result = Yii::app()->db->createCommand($sql)->query();
    $pages=new CPagination($result->rowCount);
    $pages->pageSize=2; 
    $pages->applyLimit($criteria); 
    $result=Yii::app()->db->createCommand($sql." LIMIT :offset,:limit"); 
    $result->bindValue(':offset', $pages->currentPage*$pages->pageSize); 
    $result->bindValue(':limit', $pages->pageSize); 
    $posts=$result->query();
    $this->render('report',array( 
        'posts'=>$posts, 
        'pages'=>$pages, 
    ));
  }

 [View层]

<?php foreach($posts as $row):?> 
 <?php echo CHtml::link($row["remitdate"],array('delivery/view','remitdate'=>$row["sumrate"]));?> 
 <?php echo $row["sumrate"]."<br />" ?>
 <?php endforeach;?>
 <?php 
 //分页widget代码: 
 $this->widget('CLinkPager',array('pages'=>$pages));
 ?>

优点: DAO效率高; 缺点: view层需要自己写一些样式,稍显麻烦一点

二. widget实现分页

[model层]

/**
   * @var string attribute : 日运费 (统计用)
   * 需要对新增加的字段做个声明
   */
  public $dayrate;


  /*
   * 统计功能: 统计每日的运费
   */
  public function statistics()
  {
    $criteria = new CDbCriteria;
    $criteria->select = 'remitdate, sum(rate) AS dayrate';
    $criteria->group = 'remitdate';
    
    return new CActiveDataProvider(get_class($this), array(
      'criteria'=>$criteria,
      'sort'=>array(
        // 表头设置点击排序的字段
        'attributes'=>array(
          'remitdate',
          'dayrate'=>array(
            'asc'=>'dayrate',
            'desc'=>'dayrate DESC',
          )
        ),
        'defaultOrder'=>'remitdate desc',
      ),
    ));  
  }

[Controller层]

/**
   * 运单统计功能:
   * 按日期统计
   */
  public function actionReport()
  {
    $model=new Delivery('statistics');
    $model->unsetAttributes(); // clear any default values
     
    $this->render('report',array(
      'model'=>$model,
    ));
  }

 [View层]

<?php $this->widget('zii.widgets.grid.CGridView', array(
  'id'=>'delivery-grid',
  'dataProvider'=>$model->statistics(),
  'filter'=>$model,
  'columns'=>array(
    'remitdate',
    'dayrate',
    array(
      'class'=>'CButtonColumn',
    ),
  ),
)); ?>

优点: 可以使用自带的样式; 缺点: 效率略低.

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

PHP 相关文章推荐
php4的session功能评述(二)
Oct 09 PHP
php socket方式提交的post详解
Jul 19 PHP
用sql命令修改数据表中的一个字段为非空(not null)的语句
Jun 04 PHP
解析csv数据导入mysql的方法
Jul 01 PHP
PHP上传图片进行等比缩放可增加水印功能
Jan 13 PHP
Parse正式发布开源PHP SDK
Aug 11 PHP
php数组添加元素方法小结
Dec 20 PHP
weiphp微信公众平台授权设置
Jan 04 PHP
PHP+JQuery+Ajax实现分页方法详解
Aug 06 PHP
Laravel+jQuery实现AJAX分页效果
Sep 14 PHP
php用户密码加密算法分析【Discuz加密算法】
Oct 12 PHP
PHP+Mysql无刷新问答评论系统(源码)
Dec 20 PHP
PHP微信分享开发详解
Jan 14 #PHP
常用PHP封装分页工具类
Jan 14 #PHP
详解php用curl调用接口方法,get和post两种方式
Jan 13 #PHP
PHP编程 SSO详细介绍及简单实例
Jan 13 #PHP
php 解决扫描二维码下载跳转问题
Jan 13 #PHP
PHP使用递归算法无限遍历数组示例
Jan 13 #PHP
PHP字符串逆序排列实现方法小结【strrev函数,二分法,循环法,递归法】
Jan 13 #PHP
You might like
php实现微信公众平台账号自定义菜单类
2015/10/11 PHP
PHP中Trait及其应用详解
2017/02/14 PHP
Ext.FormPanel 提交和 Ext.Ajax.request 异步提交函数的区别
2009/11/12 Javascript
Jquery为a标签的href赋值实现代码
2013/05/03 Javascript
JQUERY实现左侧TIPS滑进滑出效果示例
2013/06/27 Javascript
new Date()问题在ie8下面的处理方法
2014/07/31 Javascript
如何让你的Lightbox支持滚轮缩放及Base64图片
2014/12/04 Javascript
C#中使用迭代器处理等待任务
2015/07/13 Javascript
JavaScript接口的实现三种方式(推荐)
2016/06/14 Javascript
JS 组件系列之Bootstrap Table的冻结列功能彻底解决高度问题
2017/06/30 Javascript
extjs简介_动力节点Java学院整理
2017/07/17 Javascript
Vue的百度地图插件尝试使用
2017/09/06 Javascript
使用mint-ui开发项目的一些心得(分享)
2017/09/07 Javascript
详解如何在Vue项目中发送jsonp请求
2019/10/25 Javascript
[01:01:24]LGD vs Fnatic 2018国际邀请赛小组赛BO2 第一场 8.18
2018/08/19 DOTA
python支持断点续传的多线程下载示例
2014/01/16 Python
python返回昨天日期的方法
2015/05/13 Python
python修改字典内key对应值的方法
2015/07/11 Python
Python中异常重试的解决方案详解
2017/05/05 Python
Pycharm编辑器技巧之自动导入模块详解
2017/07/18 Python
python中利用Future对象回调别的函数示例代码
2017/09/07 Python
代码详解django中数据库设置
2019/01/28 Python
python2.7使用plotly绘制本地散点图和折线图
2019/04/02 Python
AmazeUI在模态框中嵌入表单形成模态输入框
2020/08/20 HTML / CSS
印度化妆品购物网站:Nykaa
2018/07/22 全球购物
会计毕业生自我鉴定
2013/11/04 职场文书
求职自荐信
2013/12/14 职场文书
秸秆管理实施方案
2014/03/15 职场文书
询价采购方案
2014/06/09 职场文书
食品安全处置方案
2014/06/14 职场文书
国际残疾人日广播稿范文
2014/10/09 职场文书
社区端午节活动总结
2015/02/11 职场文书
2019年自助餐厅创业计划书模板
2019/08/22 职场文书
python神经网络编程之手写数字识别
2021/05/08 Python
日元符号 ¥
2022/02/17 杂记
TV动画《政宗君的复仇》第二季制作决定PV公布
2022/04/02 日漫