2014-04-28 4 views
1

Я новичок в yii-рамочке. создание сайта работы в yii.My контроллер - sitecontroller.php, файл просмотра - list_jobseeker.php.I получил ошибку. Свойство «CDbCriteria.0» не определено.Yii: Pagination не работает

Контроллер

<?php 
    public function actionlist_jobseeker() 
    { 
     $items = Yii::app()->db->createCommand() 
    ->select('u.name,u.id uid, u.email, j.title jTitle, j.experience, s.contact_no, s.gender') 
    ->from('user u') 
    ->join('job_seeker_profile s','u.id = s.user_id') 
     ->join('job_profile j','u.id = j.user_id') 
     ->join('location l','l.id = s.location_id') 
     ->join('category c','c.id = j.category_id') 
     ->where('u.role=:role', array(':role'=>'user')) 
    ->order('u.id') 
    ->queryAll(); 
     $count=Job::model()->count($items); 
    $pages=new CPagination($count); 
    $pages->pageSize=2; 
    $pages->applyLimit($items); 
    $number_rec=count($items); 
    $this->render('list_jobseeker',array('items' =>$items,'pages' => $pages)); 
    } 

?>

Pagination дисплей код в файл представления, list_jobseeker является

<p ><?php $this->widget('CLinkPager', array(
    'pages' => $pages, 
    )) ?></p> 

Кто-нибудь дать какие-либо рекомендации плз?

ответ

2

В вашем коде вы выполняете запрос перед применением разбивки на страницы, поэтому это не имеет смысла.

Проблемы исходить от вашего applyLimit

$pages=new CPagination($count); 
$pages->pageSize=2; 
$pages->applyLimit($items); 

Вы даете ему массив объектов уже принесенных и в соответствии с documentation он принимает CDbCriteria объекта.

Вы должны выполнить что-то вроде

//Set the criteria for the request 
$criteria = new CDbCriteria; 
$criteria->select = "..."; //your columns 
$criteria->condition = "..."; //your condition 
$criteria->order = "..."; //your order 
$criteria->with = "..."; //the join you wish to make 

//Set the pagination for the request 
$count = User::model()->count($criteria); 
$pages=new CPagination($count); 
$pages->pageSize=2; 
$pages->applyLimit($criteria); 

//Find the matching items 
$items = User::model()->findAll($criteria); 

Документация по CDbCriteria

Edit: если вы действительно хотите использовать createCommand проверить это forum post

+0

Могу ли я сделать PAGINATION с CreateCommand()? – user3514095

+0

Не то, чтобы я знал. Изменить: проверьте редактирование в моем сообщении, есть сообщение, в котором показано, как делать то, что вы хотите. – darkheir

Смежные вопросы