Yii1.1を使用する案件を対応しているのですが、ナレッジがあまりないので、まとめてみました。
はじめに
YiiではCActiveRecordやCDbCriteriaでSelect句を指定しますが、
COUNT
関数やSUM
関数を指定して取得する事は出来ましたが、
CASE
文やDATE_FORMAT
関数を指定した場合にエラーになったので、
対処方法をまとめてみました。
対応方法
CDbExpressionを使用して対応します。
$criteria = new CDbCriteria();
$criteria->select = [
new CDbExpression("DATE_FORMAT('%Y-%m', t.create_date) AS create_date"),
new CDbExpression("CASE create_id WHEN create_id = 9999999 THEN 管理者 ELSE ... END AS create_user_name"),
...
];
...
$result = Post::model()->find($criteria);
CDbExpressionは、公式サイトでNOW
関数を使うパターンが紹介されています。
今回の実装方法はこの応用になるのかなと思います。