Yii Csqldataprovider работает только для первой страницы

Это очень странная ситуация для меня. У меня есть CSqldataprovider для обработки моей нумерации страниц.

По документации и примерам это работает практически правильно. Он рассчитывает правильное количество страниц на основе totalitemcount и размера страницы. Он показывает первую страницу совершенно нормально, но когда я нажимаю на ссылку на следующую страницу, она не показывает никаких записей. Когда я делаю var_dump для $this->dataProvider->getData(), он показывает пустой массив на каждой другой странице, кроме первой страницы...

Мой код для моей нумерации страниц ниже:

$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();

Если есть кто-то, кто знает, что я делаю неправильно... пожалуйста, скажите мне:)

С уважением,

Пим

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, которые заставляют код не достигать блока кода поставщика данных

Другие вопросы по тегам