詳解Yii實現(xiàn)分頁的兩種方法
Yii實現(xiàn)分頁的兩種方法,一種是用DAO實現(xiàn),另外一種是在widget實現(xiàn).
各有優(yōu)點吧,第一種效率會高一點, 第二種可以使用自帶的表格,方便一些.
一. DAO實現(xiàn)分頁.
[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));
?>
優(yōu)點: DAO效率高; 缺點: view層需要自己寫一些樣式,稍顯麻煩一點
二. widget實現(xiàn)分頁
[model層]
/**
* @var string attribute : 日運費 (統(tǒng)計用)
* 需要對新增加的字段做個聲明
*/
public $dayrate;
/*
* 統(tǒng)計功能: 統(tǒng)計每日的運費
*/
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(
// 表頭設(shè)置點擊排序的字段
'attributes'=>array(
'remitdate',
'dayrate'=>array(
'asc'=>'dayrate',
'desc'=>'dayrate DESC',
)
),
'defaultOrder'=>'remitdate desc',
),
));
}
[Controller層]
/**
* 運單統(tǒng)計功能:
* 按日期統(tǒng)計
*/
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',
),
),
)); ?>
優(yōu)點: 可以使用自帶的樣式; 缺點: 效率略低.
以上就是本文的全部內(nèi)容,希望對大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。
相關(guān)文章
JSON PHP中,Json字符串反序列化成對象/數(shù)組的方法
今天小編就為大家分享一篇JSON PHP中,Json字符串反序列化成對象/數(shù)組的方法,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧2018-05-05
yii2.0數(shù)據(jù)庫遷移教程【多個數(shù)據(jù)庫同時同步數(shù)據(jù)】
這篇文章主要介紹了yii2.0數(shù)據(jù)庫遷移的方法,可實現(xiàn)多個數(shù)據(jù)庫同時同步數(shù)據(jù)的功能,較為詳細的分析了Yii2針對遷移的創(chuàng)建、提交、重做及自定義遷移的相關(guān)概念與使用方法,需要的朋友可以參考下2016-10-10
Laravel5.1 框架Middleware中間件基本用法實例分析
這篇文章主要介紹了Laravel5.1 框架Middleware中間件基本用法,結(jié)合實例形式分析了laravel5.1框架Middleware中間件功能、創(chuàng)建、使用方法及相關(guān)操作注意事項,需要的朋友可以參考下2020-01-01
laravel 操作數(shù)據(jù)庫常用函數(shù)的返回值方法
今天小編就為大家分享一篇laravel 操作數(shù)據(jù)庫常用函數(shù)的返回值方法,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧2019-10-10

