简体   繁体   English

Yii:分页不起作用

[英]Yii: Pagination not working

I am new in yii framework. 我是yii框架的新手。 creating a job site in yii.My controller is sitecontroller.php,view file is list_jobseeker.php.I got the error Property "CDbCriteria.0" is not defined. 在yii中创建工作站点。我的控制器是sitecontroller.php,查看文件是list_jobseeker.php。我收到错误消息“ CDbCriteria.0”,但未定义。

Controller 调节器

<?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 display code in view file,list_jobseeker is 视图文件中的分页显示代码,list_jobseeker为

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

Anybody give any suggestion plz? 有人给任何建议吗?

In your code you execute the query before applying the pagination, so it doesn't make sense. 在您的代码中,您应在应用分页之前执行查询,因此这没有任何意义。

The problem come from your applyLimit 问题来自您的applyLimit

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

You give it an array of objects already fetched and according to the documentation it takes a CDbCriteria object. 您给它一个已经获取的对象数组,并根据文档获取一个CDbCriteria对象。

You should perform something like 您应该执行类似

//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);

Documentation of the CDbCriteria CDbCriteria的文档

Edit : if you really want to use createCommand check this forum post 编辑 :如果您真的要使用createCommand请查看此论坛帖子

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM