php - 按 Doctrine QueryBuilder 中的计算字段排序

标签 php mysql symfony doctrine-orm

我的一个实体中有以下字段:price(decimal)promo(boolean)promoPrice(decimal)我想通过实际价格查询订单,所以我需要创建这样的查询:

SELECT *, (!promo*price + promo*promo_price) as real_price 
FROM `product` ORDER BY real_price ASC

有什么方法可以使用 QueryBuilder 来完成,或者我可能需要使用一些 native 方法?

最佳答案

解决方案:

$repository = $this->getDoctrine()->getRepository('AppBundle:Product');
$query = $repository->createQueryBuilder('p')
    ->addSelect('CASE WHEN p.promo = :value THEN p.promoPrice ELSE p.price END AS HIDDEN realPrice')
    ->setParameter('value', true)
    ->orderBy('realPrice', 'ASC')
    ->getQuery();

关于php - 按 Doctrine QueryBuilder 中的计算字段排序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47461601/

相关文章:

php - 将文件从远程 URL 复制到我的服务器

javascript - 将img src(加密图像)存储到javascript数组中,然后上传。

php - SearchPhaseExecutionException [无法执行阶段[查询]

mysql - 其中 ActiveRecord 查询返回空 AssociationRelation

php - 全局转义变量

php - 测试 Symfony2 session

php - QuickBooks 在 id 周围合并字节、方括号和连字符

PHP检查SSN的长度

mysql - 在 MySQL 中将行转换为列以获取自定义值

mysql获取数据并在另一个表中查找