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