Heim >Backend-Entwicklung >PHP-Tutorial >Ausführliche Erläuterung zweier Methoden zur Implementierung von Paging in Yii
Es gibt zwei Möglichkeiten, Paging in Yii zu implementieren, eine besteht darin, DAO zu verwenden, und die andere darin, es in Widgets zu implementieren.
Jede hat ihre eigenen Vorteile , und die zweite ist effizienter.
1. DAO implementiert Paging.
[Controller-Ebene ]
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, )); }
[Ebene anzeigen]
<?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)); ?>
Vorteile: Die DAO-Effizienz ist hoch. Nachteile: Die Ansichtsebene muss einige Stile selbst schreiben, was etwas mühsam ist
2. Widget implementiert Paging
[Modellebene]
/** * @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', ), )); }
[Controllerebene]
/** * 运单统计功能: * 按日期统计 */ public function actionReport() { $model=new Delivery('statistics'); $model->unsetAttributes(); // clear any default values $this->render('report',array( 'model'=>$model, )); }
[ Ebene anzeigen]
<?php $this->widget('zii.widgets.grid.CGridView', array( 'id'=>'delivery-grid', 'dataProvider'=>$model->statistics(), 'filter'=>$model, 'columns'=>array( 'remitdate', 'dayrate', array( 'class'=>'CButtonColumn', ), ), )); ?>
Vorteile: Kann im integrierten Stil verwendet werden; Nachteile: Etwas geringe Effizienz
Das Obige ist der gesamte Inhalt dieses Artikels zum Lernen aller, und ich hoffe auch, dass jeder die chinesische PHP-Website unterstützt.
Ausführlichere Erläuterungen zu den beiden Paging-Methoden in Yii finden Sie auf der chinesischen PHP-Website für verwandte Artikel!