我的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,
),
)); ?>
答案 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,
),
))