首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Yii CActiveDataProvider项目计数不同

Yii CActiveDataProvider项目计数不同
EN

Stack Overflow用户
提问于 2015-01-15 22:51:40
回答 3查看 1.2K关注 0票数 0

我是Yii的新人。我有下面的Yii代码。

代码语言:javascript
复制
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个项目。

我写的代码是不是错了?

EN

回答 3

Stack Overflow用户

发布于 2015-01-15 22:59:47

您需要禁用分页:

代码语言:javascript
复制
$dataProvider = new CActiveDataProvider('InputData', array(
    'criteria' => $criteria
    'pagination' => false
));

作为补充,您可能需要像在this answer中那样批量迭代您的项以节省内存

票数 1
EN

Stack Overflow用户

发布于 2015-01-15 22:57:40

您应该检查$dataProvider是否已分页:

代码语言:javascript
复制
 $dataProvider = new CActiveDataProvider('InputData', array(
    'criteria'=>$criteria,
    'pagination' => array(
        'pageSize' => 25,
    ),
));

试试这个,看看行数是不是25行。

要删除分页,只需将分页设置为false即可。

代码语言:javascript
复制
 $dataProvider = new CActiveDataProvider('InputData', array(
   'criteria'=>$criteria,
   'pagination' => false,
  ),
));

链接:http://www.yiiframework.com/doc/api/1.1/CDataProvider#pagination-detail

票数 0
EN

Stack Overflow用户

发布于 2015-01-15 22:59:44

不,你没说错。这只是DataProvider分页。你可以像这样把它关掉

代码语言:javascript
复制
$dataProvider = new CActiveDataProvider('InputData', array(
    'criteria'=>$criteria,
    'pagination' => FALSE,
));
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/27966116

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档