按Doctrine QueryBuilder中的计算字段排序

时间:2017-11-23 18:31:01

标签: 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做,或者我需要使用一些原生方法?

1 个答案:

答案 0 :(得分:1)

<强> SOLUTION:

$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();