我是Yii的新人。我有下面的Yii代码。
public function actionExport($typeid=0, $locationid=0, $sidx='date_input', $sord='desc',
$kategori='', $to = 'xls'){
// inisialisasi criteria query
$criteria = new CDbCriteria();
$criteria->order = "$sidx $sord";
// filter lokasi
if (is_numeric($locationid) && $locationid !== 0)
{
$criteria->with = array('data'=>array(
'condition'=>'data.locationid=:locationid',
'params'=>array(':locationid'=>$locationid)
));
} else {
if (is_numeric($typeid) && $typeid !== 0)
{
$criteria->with = array('data.location'=>array(
'with'=>array(
'type'=>array(
'condition'=>'type.typeid=:typeid',
'params'=>array(':typeid'=>$typeid)
)
)
));
} else {
$criteria->with = array('data.location'=>array(
'with'=>array(
'type'=>array(
'condition'=>'type.type_desc=:type_desc',
'params'=>array(':type_desc'=>$kategori)
)
)
));
}
}
// filter range tanggal
if (isset($_REQUEST['startdate'], $_REQUEST['enddate']))
{
$startdate = $_REQUEST['startdate'];
$enddate = $_REQUEST['enddate'];
$criteria->condition = 'date_input <= :enddate AND date_input >= :startdate';
$criteria->params = array(':startdate'=>$startdate, ':enddate'=>$enddate);
}
$dataProvider = new CActiveDataProvider('InputData', array(
'criteria'=>$criteria
));
echo $dataProvider->getTotalItemCount(); // this is about 5623
if($to == 'xls'){
$this->_toXls($dataProvider->getData());
}else{
}
}这行echo $dataProvider->getTotalItemCount()打印5623,但是在循环this->_toXls()中,在excel文件中打印的行只有10行。当我使用print_r($dataProvider->getData())调试数据提供程序时,同样的结果是10个项目。
我写的代码是不是错了?
发布于 2015-01-15 22:59:47
您需要禁用分页:
$dataProvider = new CActiveDataProvider('InputData', array(
'criteria' => $criteria
'pagination' => false
));作为补充,您可能需要像在this answer中那样批量迭代您的项以节省内存
发布于 2015-01-15 22:57:40
您应该检查$dataProvider是否已分页:
$dataProvider = new CActiveDataProvider('InputData', array(
'criteria'=>$criteria,
'pagination' => array(
'pageSize' => 25,
),
));试试这个,看看行数是不是25行。
要删除分页,只需将分页设置为false即可。
$dataProvider = new CActiveDataProvider('InputData', array(
'criteria'=>$criteria,
'pagination' => false,
),
));链接:http://www.yiiframework.com/doc/api/1.1/CDataProvider#pagination-detail
发布于 2015-01-15 22:59:44
不,你没说错。这只是DataProvider分页。你可以像这样把它关掉
$dataProvider = new CActiveDataProvider('InputData', array(
'criteria'=>$criteria,
'pagination' => FALSE,
));https://stackoverflow.com/questions/27966116
复制相似问题