【问题标题】:Yii Csqldataprovider works only for first pageYii Csqldataprovider 仅适用于第一页
【发布时间】:2014-05-20 14:12:21
【问题描述】:

这对我来说是一个非常奇怪的情况。我有一个 CSqldataprovider 来处理我的分页。

根据文档和示例,它几乎是正确的。它根据 totalitemcount 和 pagesize 计算正确的页数。它完美地显示了第一页,但是当我单击下一页链接时,它没有显示任何记录。当我在 $this->dataProvider->getData() 上执行 var_dump 时,它会在除第一页之外的每一页上显示一个空数组...

我的分页代码如下:

$result = Yii::app()->db->createCommand($sqlData)->queryAll();
$pages = new YMPagination(count($result));
    $pages->pageSize = Yii::app()->params['itemsPerPage'];
    $this->dataProvider = new CSqlDataProvider($sqlData, array(
        'totalItemCount'=>count($result),
        'sort'=>array(
            'attributes'=>array(
                'recept_id',
            ),
        ),
        'pagination'=>$pages,
    ));
$result = $this->dataProvider->getData();

如果有人知道我做错了什么...请告诉我:)

亲切的问候,

皮姆

【问题讨论】:

标签: php yii pagination csqldataprovider


【解决方案1】:

首先,两者都是

$result = Yii::app()->db->createCommand($sqlData)->queryAll();

$result = $this->dataProvider->getData();

正在做同样的事情,删除其中一个

如果你想要项目的数量,只需编写一个计数查询:

$count = Yii::app()->db->createCommand('select count(*) from myTable')->queryScalar();

而不是

count($result)

最后,请确保您始终默认使用这些选项,我的意思是不要使用使代码无法到达数据提供者代码块的 if 语句

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-03-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-12-12
    相关资源
    最近更新 更多