2
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

Yii1.1でSelect句で指定するカラムにSQL関数やCASE文を使用する方法

Posted at

Yii1.1を使用する案件を対応しているのですが、ナレッジがあまりないので、まとめてみました。

はじめに

YiiではCActiveRecordCDbCriteriaで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関数を使うパターンが紹介されています。
今回の実装方法はこの応用になるのかなと思います。

2
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
2
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?