2014-06-23 2 views
0

나는 다음과 같은 하나 이상의 critera을 가질 수 쿼리를 만들고 싶어 :Yii에서 다중 기준 쿼리를 만드는 방법은 무엇입니까?

select * from table where c1 IN(...) AND c2 IN (....) AND c3 IN (....);

내가 3 개 필드 (c1..c3)를 사용할 수 있습니다 또는 하나 개의 필드 만 사용할 수 있으며, 및 IN 절의 배열은 여기 내 코드입니다, 너무 고정되지 않습니다

$w = 'select * from jobs where '; 
         $c1 = new CDbCriteria(); 
         if($dcr!=null){ 
          $w = $w.'division IN('; 
          $dcrr = "'". implode("', '", $dcr) ."'"; 
          $w = $w.$dcrr.");"; 
          foreach($dcr as $txt){ 
           $c1->compare('division',$txt,true,'OR'); 
          } 
         } 

         if($lcr!=null){ 
          $c2 = new CDbCriteria(); 
          foreach($lcr as $txt){ 
           $c2->compare('location',$txt,true,'OR'); 
          } 
         } 

         if($scr!=null){ 
          $c3 = new CDbCriteria(); 
          foreach($lcr as $txt){ 
           $c3->compare('Salary',$txt,true,'OR'); 
          } 
         } 
         $connection=Yii::app()->db; 
         $connection->active=true; 
         $command=$connection->createCommand($w); 
         $model = $command->query(); 
         $connection->active=false; 

         $w=''; 
        //$model = Jobs::model()->findAll($c2); 
        } 
       } 



      $this->renderPartial('_index', array('model'=>$model)); 
+0

이 yiiframework.com/doc/guide/1.1/en/quickstart.first-app을 확인하고 Yii 사용에 대해 자세히 알아보십시오. MVC 패턴과 거의 GII를 확인하십시오! 죄송하지만 코드가 Yii와 일치하지 않습니다. – lin

+0

@lin 나는 Yii를 사용하는 방법을 알고,이 코드는 작동하지 않습니다, 나는 그것을 여러 번 편집하고 업데이트하기 전에 속성을 제거하지 않고 복사했습니다. 제 질문은 어떻게 CDBCONNECTION의 다중 기준으로 쿼리를 작성합니까, 고맙습니다. – Mohammad

답변

1

아이디어는 그런 addInCondition

사용 뭔가 사용하는 것입니다

,536를
$criteria = new CDbCriteria(); 
if ($useC1) 
{ 
    $criteria->addInCondition('c1', getOptionsArrayForC1()); 
} 
if ($useC2) 
{ 
    $criteria->addInCondition('c2', getOptionsArrayForC2()); 
} 
if ($useC3) 
{ 
    $criteria->addInCondition('c3', getOptionsArrayForC3()); 
} 
관련 문제