我正在尝试在 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');
不起作用,我收到意外情况的错误。
所以我尝试了这个:
$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 ')'
第二个。
问题是:是否可以使用学说查询生成器在 ORDER BY 中使用条件?