2015-01-21 3 views
0

Covert createCommand to CDbCriteria.이 쿼리 만들기

이 쿼리를 만드는 방법 CDbCriteria yii?

SELECT SUM(f.mablagh) as kol,k.code,k.name,m.name AS mName,m.code AS mCode 
FROM T1 AS f 
LEFT JOIN T2 AS k ON k.code=f.kCode 
LEFT JOIN T3 As m ON m.code=k.main 
GROUP BY k.main 

T1 모델 :

public function relations() 
{ 
    return array(
     'kCode0' => array(self::BELONGS_TO, 'T2', 'kCode'), 
    ); 
} 

T2 모델 : 즉

return array(
     'main' => array(self::BELONGS_TO, 'T3', 'mymain'), 
    ); 

,이 코드로 변환합니다 :

$result = Yii::app()->db->createCommand() 
       ->select('SUM(f.mablagh) as kol,k.code,k.name,m.name AS mName,m.code AS mCode') 
       ->from('T1 AS f') 
       ->join('T2 AS k' ,'k.code=f.kCode') 
       ->join('T3 AS m' ,'m.code=k.main') 
       ->group('k.main') 
       ->queryAll(); 

사람 :

을 당신이 기준을 사용하려면
$criteria = new CDbCriteria; 
. 
. 
. 
. 
$result = T1::model()->findAll($criteria); 

답변

0

, 당신은 다른 모델에 관계없이 사용할 수 있습니다

$criteria = new CDbCriteria; 
$criteria->select = "SUM(t.mablagh) as kol,k.code,k.name,m.name AS mName,m.code AS mCode"; 
$criteria->join = "LEFT JOIN T2 AS k ON k.code=t.kCode LEFT JOIN T3 AS m ON m.code=k.main"; 
$criteria->group = "k.main"; 
$result = T1::model()->findAll($criteria); 
+0

감사 만에 ** 인 print_r ($ 결과) ** 데이터 T2는 T3가 존재하지를! –

+0

테이블 이름으로 변경해야합니다. 또는 클래스를 사용하는 경우 T2 :: model() -> tableName()을 수행하십시오. – Skatox

+0

약간 설명 할 수 있습니다 –