Я новичок в yii. В настоящее время я создаю API для какого-то проекта. Мне удалось получить все данные из базы данных и отправить их как ответ на передний план. Теперь есть улучшение, которое я должен ограничить результаты, выводимые на страницу. Итак, разбивка на страницы. Я много читал о CPagination в yii, и независимо от того, что я пробовал, я получаю 500 внутренних ошибок сервера. Это мои коды;
public function actionIndex()
{
//getting page number from front end
$request = file_get_contents('php://input');
if (is_null($request)) {
$page = 1;
} else {
$input = json_decode($request, true);
$page = $input['page'];
}
//Criteria sorting templates by id DESC
$criteria = new CDbCriteria;
$criteria->order = 'id DESC';
//Number of rows returned
$count = TblTemplate::model()->count($criteria);
//Templates per page
$perPage = 2;
//Calculating the offset
$offset = ($page > 1) ? ($page * $perPage) - $perPage : 0;
$pages = new CPagination($count);
$pages->pageSize = $perPage;
$pages->offset = $offset;
$pages->applyLimit($criteria);
//fetching all templates
$templates = TblTemplate::model()->findAll($criteria);
$response = [];
//Fetching all array - filtering through the cluster
foreach ($templates as $template) {
$response[] = [
'id' => $template->id,
'name' => $template->name,
'email' => $template->email,
'content' => $template->content
];
}
echo json_encode($response);
}
Спасибо за вашу помощь.
Измените это как: -
$perPage = 2;
$offset = ($page > 1) ? ($page * $perPage) - $perPage : 0;
$criteria = new CDbCriteria;
$criteria->order = 'id DESC';
$criteria->limit=$perPage;
$criteria->offset=$offset;
$templates = Users::model()->findAll($criteria);
offset
иlimit
вCDbCriteria