我正在尝试使用doctrine Query Builder进行算术运算,并将结果分配给别名。 以下是geeksengine的一个示例,我想将其“转换”为doctrine QueryBuilder:
/*
Query 1: This query calculates the total price before discount and after discount for each order item.
*/
SELECT order_id,
product_id,
unit_price * quantity AS "regular_price",
FROM order_details;
这是我开始的:
$queryBuilder = $this->em->createQueryBuilder();
$queryBuilder->select('o')
->addSelect('o.unit_price * o.quantity AS regular_price')
->from('Test\Model\Entity\OrderEntity', 'o');
但这引发了一个例外:
RuntimeException
Not all identifier properties can be found in the ResultSetMapping: id
我想,这是因为regular_price
不是数据库的一部分 - 因此无法映射。
我可以用纯DQL完成它但由于某些原因我必须坚持使用QueryBuilder。
有什么想法吗?
答案 0 :(得分:0)
您可以使用算术Expr函数prod
(doc),然后将结果分配给您的别名:
$queryBuilder = $this->em->createQueryBuilder();
$queryBuilder->select('o')
->addSelect($queryBuilder->expr()->prod('o.unit_price', 'o.quantity').' AS regular_price')
->from('Test\Model\Entity\OrderEntity', 'o');