且构网

分享程序员开发的那些事...
且构网 - 分享程序员编程开发的那些事

Yii 分页方法总结

更新时间:2022-09-10 23:21:11

  1. <span style="font-family: Arial, Helvetica, sans-serif; white-space: normal; ">利用CPagination实现</span>  

在 Controller中如下代码:


  1. public function actionIndex()    
  2.     {    
  3.         $criteria = new CDbCriteria();    
  4.         $criteria->order = 'createtime desc';        
  5.         $count = Article::model()->count($criteria);    
  6.             
  7.         $pager = new CPagination($count);    
  8.         $pager->pageSize = 10;             
  9.         $pager->applyLimit($criteria);    
  10.     
  11.         $artList = Article::model()->findAll($criteria);    
  12.         $this->render('index',array('pages'=>$pager,'list'=>$artList));    
  13.     }    


在视图中代码如下:

  1. <div id="pager">    
  2.     <?php    
  3.     
  4.     $this->widget('CLinkPager',array(    
  5.         'header'=>'',    
  6.         'firstPageLabel' => '首页',    
  7.         'lastPageLabel' => '末页',    
  8.         'prevPageLabel' => '上一页',    
  9.         'nextPageLabel' => '下一页',    
  10.         'pages' => $pages,    
  11.         'maxButtonCount'=>13    
  12.         )    
  13.     );    
  14.     ?>    
  15.     </div>    

ps:一般写法:

  1. $criteria = new CDbCriteria;    
  2. $count = DnOnline::model()->count($criteria);    
  3.     
  4. $pages = new CPagination($count);                   
  5. $pages->pageSize = 5;    
  6. $pages->applylimit($criteria);    
  7.     
  8. $model = DnOnline::model()->findAll($criteria);  

  1. CDB写法:    
  2.     
  3.     $criteria = new CDbCriteria;    
  4.     $sql = "SELECT * FROM USER";    
  5.     $modelYii::app()->db->createCommand($sql)->queryAll();    
  6.     $pages = new CPagination(count($model));                   
  7.     $pages->pageSize = 4;    
  8.     $pages->applylimit($criteria);    
  9.     
  10.     $model=Yii::app()->db->createCommand($sql." LIMIT :offset,:limit");    
  11.     $model->bindValue(':offset', $pages->currentPage*$pages->pageSize);    
  12.     $model->bindValue(':limit', $pages->pageSize);    
  13.     $model=$model->queryAll();   

  1. $criteria=new CDbCriteria();    
  2.             $result = Yii::app()->db->createCommand($sql_do)->query();    
  3.            $pages=new CPagination($result->rowCount);    
  4.           $pages->pageSize=2;    
  5.             $pages->applyLimit($criteria);    
  6.           $result=Yii::app()->db->createCommand($sql_do." LIMIT 2");    
  7.            $result->bindValue(':offset', $pages->currentPage*$pages->pageSize);    
  8.          $result->bindValue(':limit', $pages->pageSize);    
  9.          $list=$result->query();   
在yii中有自带的分页方式,通过cgridview等