よしたかの日常

日常の事やイラスト投稿、開発している時の備忘録を書いています。

DataMapperでカラム指定の所で条件式

おはようございます!

先週に書こうと思って、下書きを書いていたらまさかの寝落ちで1週間経ってしまってた(´・ω・`)
半端に下書き書いていたから、どんな記事を書こうとしたのか思い出すのに苦労しました(笑)

仕事で、ちと悩んだことなので、忘れないように記事にカキカキφ( . . )

CodeIgniterにDataMapperを設定した環境での書き方になるのかな。
仕事上でしているのが、もうある程度組んでいるのを、組んでいっているからです。

DataMapperで、と書いていますけど、べた書きのSQL文でも問題ないです。
というか、SQL文のを見っけて、DataMapperでできるかなって、試したら出来たので大丈夫かと。


SQL文を発行する際に、対象の数値が1だったらこれ、1より上だったらこれ、にして、グループ分けをしたかった処理で悩んだ時の話になります。

WHERE文ではうまくできず、どうにかできないかとググってみたら、カラム指定する箇所で条件式を書けることをしりました。

下記のような記述で、条件に応じて指定カラムに結果が格納されていくことができます。

SELECT
  CASE
    WHEN 条件式1 THEN1
    WHEN 条件式2 THEN2
    ELSE3
  END AS カラム名
FROM テーブル名;


これをDataMapperで指定する場合は、下記のような感じに書けば大丈夫です。

$books = new Books();
$books->select('
  CASE
    WHEN impression>1 THEN reprint
    ELSE new_book
  END AS impression_type');
$books->get();

そのまんま、SELECT指定する部分に当てはめてやれば、問題なく条件式が適応された値が、カラムに入っていました。

なんか、集計するので、こうしたかった記憶があるんだけどなぁ。

まぁ、でも、こういうやり方があると知ったのはプラスになったので、結果オーライです。
中々、使い所がないかもしれませんけどねヽ(´ー`)ノ