Frage

I am new in yii framework.I am trying for search opeartaion using yii framework.I have more than one condition.

I got the error. Attempt to assign property of non-object

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

Anybody help me?

My controller code is

    <?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));
    }
 }
 ?>
War es hilfreich?

Lösung

I do not get what you exactly want to achieve, but using the $criteria_new variable seems to be a problem and redundant. Use $criteria->addCondition() here.

<?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));
    }
 }

Andere Tipps

I hope there is a problem in $criteria_new

When $experience is NULL it will form incomplete query.

Try this

   $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;
       }
   }

Now applyLimit() should be

   $pages->applyLimit($criteria);
Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top