Cakephp3のQueryでCASE文を使う

やりたいこと

SELECT

    CASE WHEN name IS NULL THEN name

    ELSE name_kana

    END `user_name`

FROM

    users;

 

こんな感じで↑↑で、カラムAがNULL出なければカラムA、カラムAがNULLならカラムB、みたいに抽出したい。

 

やり方

use Cake\Database\Expression\IdentifierExpression;

$userNameCase = $query->newExpr()

    ->addCase(

        [$query->newExpr()->add(['Users.name IS NULL'])],

        [new IdentifierExpression('Users.name'), new IdentifierExpression('Users.name_kana')],

        ['string', 'string']

);




$query->select([

    'user_name' => $userNameCase

]);

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

CAPTCHA