Native SQLでこんな風にORDER BYでクエリを作ろうとしている
ORDER BY CASE `promotion` WHEN 0 THEN `net_price`
ELSE `promotion_price`
END DESC, `net_price` DESC
このようなもの
$qb->orderBy('CASE `products.promotion` WHEN 0 THEN `products.net_price`
ELSE `products.promotion_price`
END', 'DESC');
$qb->orderBy('products.net_price', 'DESC');
動作しません。予期しない CASE のエラーが発生します。
だから私はこれを試しました:
$qb->addSelect('CASE products.promotion WHEN 0 THEN products.net_price ELSE products.promotion_price END price');
$qb->orderBy('products.price', 'DESC');
今回私は得る
'promotion WHEN': Error: Invalid PathExpression. Must be a StateFieldPathExpression.
どちらの場合も、それが役に立ったと言っている投稿がほとんど見つからなかったので、括弧に入れてみました。
Error: Expected Doctrine\ORM\Query\Lexer::T_FROM, got ')'
2枚目用。
質問は次のとおりです:Doctrineクエリビルダーを使用してORDER BYで条件を使用することは可能ですか?