2015-01-21 4 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(); 

To:

$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

Можно немного объяснить –

Смежные вопросы