CGridView寻呼机问题

时间:2013-04-29 06:02:40

标签: php yii yii1.x

我的MySQL表中有16条记录。我已经提出了一个查询来按日期获取不同的记录,它返回10条记录。但是在视图页面上,在网格视图中,摘要显示:

  

显示16项结果中的1-10项。

但它应该显示

  

显示10个结果中的1-10个。

但是显示的记录是10.为什么?

我的代码是:

<?php
$criteria=new CDbCriteria;
$criteria->select = 'DISTINCT(`call_date`)';
$criteria->order = 'call_date DESC'; 
$dataProvider=new CActiveDataProvider('modelName', array(
    'criteria'=>$criteria,
    'pagination'=>array(
        'pageSize'=>10,
    ),
)); ?>

2 个答案:

答案 0 :(得分:0)

过去使用distinct时我也遇到过这个问题。您可以通过传递正确数量的项目来“修复”它。

为此,请将totalItemCount添加到$ dataProvider,如下所示:

$dataProvider=new CActiveDataProvider('modelName', array(
    'criteria'=>$criteria,
    'totalItemCount' => count(modelName::model()->findAll($criteria)),
    'pagination'=>array(
        'pageSize'=>10,
    ),
));

modelName::model()->count($criteria)不起作用。

答案 1 :(得分:0)

在这种情况下,您应该调整CActiveDataProvider::$countCriteria以仅计算唯一call_date

$dataProvider=new CActiveDataProvider('modelName', array(
    'criteria'=>$criteria,
    'countCriteria'=>array(
        'select' => 'COUNT(DISTINCT `call_date`)',
    ),
    'pagination'=>array(
        'pageSize'=>10,
    ),
))