使用yii框架无法进行搜索操作


Search operation is not working using yii framework

我是yii框架的新手。我正在尝试使用yii框架进行搜索操作。我有不止一个条件。

我得到了错误。尝试赋值非对象的属性

C: ' wamp ' www ' yii ' framework ' web ' CPagination.php (216)

有人能帮我吗?

我的控制器代码是
    <?php
 public function actionadvance_search_result()
  {
    $title=$_GET['title'];
    $experience=$_GET['experience'];
    $location=$_GET['location'];
    $criteria=new CDbCriteria();
    $criteria_new =NULL;
    if($experience!="")
    {
      $criteria_new = $criteria->condition = "(title like '%$title%' or  key_skills like '%$title%') and (experience like '%$experience%')";    
    }
    if($location!="")
    {
       $cri_location=$criteria->condition = "location_id like '%$location%'";       
       $criteria_new = $cri_location.' '.'and'.' '.$criteria_new;
    }
    $count=Job::model()->count($criteria_new);
    $pages=new CPagination($count);
    $pages->pageSize=2;
    $pages->applyLimit($criteria_new);
    $model=Job::model()->findAll($criteria_new);
    $number_rec=count($model);
    if($number_rec<=0)
    {
      $this->render('search_result1',array('model' =>$model));
    }
    else
    {
      $this->render('advance_search_result',array('model' =>$model,'pages' => $pages));
    }
 }
 ?>

我不知道您到底想要实现什么,但是使用$criteria_new变量似乎是一个问题和多余的。此处使用$criteria->addCondition()

<?php
 public function actionadvance_search_result()
  {
    $title=$_GET['title'];
    $experience=$_GET['experience'];
    $location=$_GET['location'];
    $criteria = new CDbCriteria();
    if($experience!="")
    {
      $criteria->addCondition("(title like '%$title%' or  key_skills like '%$title%') and (experience like '%$experience%')");    
    }
    if($location!="")
    {
       $criteria->addCondition("location_id like '%$location%'");
    }
    $count=Job::model()->count($criteria);
    $pages=new CPagination($count);
    $pages->pageSize=2;
    $pages->applyLimit($criteria;
    $model=Job::model()->findAll($criteria);
    $number_rec=count($model);
    if($number_rec<=0)
    {
      $this->render('search_result1',array('model' =>$model));
    }
    else
    {
      $this->render('advance_search_result',array('model' =>$model,'pages' => $pages));
    }
 }

我希望$criteria_new

有问题

当$experience为NULL时,将形成不完整查询。

试试这个

   $criteria=new CDbCriteria();
   // $criteria_new =NULL; ---------> Remove it
   $condition='';
   if($experience!="")
   {
       $condition=(title like '%$title%' or  key_skills like '%$title%') and (experience like '%$experience%');
   }
   if($location!="")
   {
       if($experience!="")
       {
           $tempCond="location_id like '%$location%'";
           $condition=$condition.' AND '. $tempCond;
       } 
       else
       {
          $condition=$tempCond;
       }
   }

现在applyLimit()应该是

   $pages->applyLimit($criteria);