詳解Yii實現分頁的兩種方法

來源:互聯網
上載者:User
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',    ),  ),)); ?>

優點: 可以使用內建的樣式; 缺點: 效率略低.

以上就是本文的全部內容,希望對大家的學習有所協助,也希望大家多多支援topic.alibabacloud.com。

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.