2

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

2 回答 2

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)对此不起作用。

于 2013-04-29T09:11:42.387 回答
0

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

$dataProvider=new CActiveDataProvider('modelName', array(
    'criteria'=>$criteria,
    'countCriteria'=>array(
        'select' => 'COUNT(DISTINCT `call_date`)',
    ),
    'pagination'=>array(
        'pageSize'=>10,
    ),
))
于 2018-05-06T20:09:43.867 回答