Yii實(shí)現(xiàn)分頁(yè)的兩種方法,一種是用DAO實(shí)現(xiàn),另外一種是在widget實(shí)現(xiàn).
一. DAO實(shí)現(xiàn)分頁(yè). [Controller層] 1 public function actionReport() 2 { 3 $sql = "select remitdate, sum(rate) sumrate from td_delivery 4 group by remitdate 5 order by remitdate desc"; 6 $criteria=new CDbCriteria(); 7 $result = Yii::app()->db->createCommand($sql)->query(); 8 $pages=new CPagination($result->rowCount); 9 $pages->pageSize=2; 10 $pages->applyLimit($criteria); 11 $result=Yii::app()->db->createCommand($sql." LIMIT :offset,:limit"); 12 $result->bindValue(':offset', $pages->currentPage*$pages->pageSize); 13 $result->bindValue(':limit', $pages->pageSize); 14 $posts=$result->query(); 15 $this->render('report',array( 16 'posts'=>$posts, 17 'pages'=>$pages, 18 )); 19 } [View層] 1 <?php foreach($posts as $row):?> 2 <?php echo CHtml::link($row["remitdate"],array('delivery/view','remitdate'=>$row["sumrate"]));?> 3 <?php echo $row["sumrate"]."<br />" ?> 4 <?php endforeach;?> 5 <?php 6 //分頁(yè)widget代碼: 7 $this->widget('CLinkPager',array('pages'=>$pages)); 8 ?> 優(yōu)點(diǎn): DAO效率高; 缺點(diǎn): view層需要自己寫一些樣式,稍顯麻煩一點(diǎn) 二. widget實(shí)現(xiàn)分頁(yè) [model層] 1 /** 2 * @var string attribute : 日運(yùn)費(fèi) (統(tǒng)計(jì)用) 3 * 需要對(duì)新增加的字段做個(gè)聲明 4 */ 5 public $dayrate; 6 7 8 /* 9 * 統(tǒng)計(jì)功能: 統(tǒng)計(jì)每日的運(yùn)費(fèi) 10 */ 11 public function statistics() 12 { 13 $criteria = new CDbCriteria; 14 $criteria->select = 'remitdate, sum(rate) AS dayrate'; 15 $criteria->group = 'remitdate'; 16 17 return new CActiveDataProvider(get_class($this), array( 18 'criteria'=>$criteria, 19 'sort'=>array( 20 // 表頭設(shè)置點(diǎn)擊排序的字段 21 'attributes'=>array( 22 'remitdate', 23 'dayrate'=>array( 24 'asc'=>'dayrate', 25 'desc'=>'dayrate DESC', 26 ) 27 ), 28 'defaultOrder'=>'remitdate desc', 29 ), 30 )); 31 } [Controller層] 1 /** 2 * 運(yùn)單統(tǒng)計(jì)功能: 3 * 按日期統(tǒng)計(jì) 4 */ 5 public function actionReport() 6 { 7 $model=new Delivery('statistics'); 8 $model->unsetAttributes(); // clear any default values 9 10 $this->render('report',array( 11 'model'=>$model, 12 )); 13 } [View層] |
|
|