2017-03-03 21 views
0

は、我々は以下のコアSQLよりもYii2 ActiveQueryの方法でスイッチケースクエリを持つことができますか?スイッチケース

$comboGraph = \Yii::$app->db->createCommand('select class , count(*) registered, '. 
    'sum(case when payment_status = \'1\' then 1 else 0 end) paid, '. 
    'sum(case when payment_status = \'0\' then 1 else 0 end) unpaid '. 
    'from students group by class ORDER BY FIELD(class,\'V\',\'VI\',\'VII\')') 
    ->queryAll(); 

私は上記のクエリを使用しても結果が得られますが、私は自分のものがもっとYii2 Specificであることを望みます。だから、どんな提案?

答えて

0

createCommandの使用は... Yii2の苦情である(と現時点では、これらのstatementesはフラットSQL命令によって管理されている場合..ステートメントCASEを管理するための特定の機能がありません)

をしかし、あなたが使用することを望むかもしれませんクエリビルダおよび関連機能..あなたがより良い読書

のための単一および二重引用符の正しい組み合わせを使用することができます http://www.yiiframework.com/doc-2.0/guide-db-query-builder.html

$comboGraph = (new \yii\db\Query()) 
->select("class 
     , count(*) registered 
     , sum(case when payment_status = '1' then 1 else 0 end) paid 
     , sum(case when payment_status = '0' then 1 else 0 end) unpaid") 
->from('students') 
->groupBy('class') 
->orderBy("FIELD(class,'V','VI','VII')") 
->all(); 

関連する問題