Php 条令QueryBuilder-多个选择字段
我对多个选择字段有一个奇怪的问题。 这是我的疑问:Php 条令QueryBuilder-多个选择字段,php,doctrine-orm,symfony,query-builder,Php,Doctrine Orm,Symfony,Query Builder,我对多个选择字段有一个奇怪的问题。 这是我的疑问: $query = $queryBuilder ->select( [ 'SUM(t1.quantity) AS quantity_t1', 't2.currency AS currency_t2', 'SUM(t1.amount - t1.promotionDisc
$query = $queryBuilder
->select(
[
'SUM(t1.quantity) AS quantity_t1',
't2.currency AS currency_t2',
'SUM(t1.amount - t1.promotionDiscount) AS amount_t1',
'SUM(ROUND((t1.amount - t1.promotionDiscount) / ((100 + t2.tax) / 100), 2)) AS amount_net',
'SUM(ROUND((t1.amount - t1.promotionDiscount) / '.EXCHANGE_RATE_GBP.', 2)) AS amount_gbp',
'SUM(ROUND(ROUND((t1.amount - t1.promotionDiscount) / '.EXCHANGE_RATE_GBP.', 2) / ((100 + t2.tax) / 100), 2)) AS amount_gbp_net'
]
)
->from(Sale::class, 't2')
->join(
SaleRow::class,
't1',
Join::WITH,
$queryBuilder->expr()->andX(
$queryBuilder->expr()->eq('t1.saleId', 't2.id')
)
)
->where(
$queryBuilder->expr()->between('t2.purchaseTime', ':start', ':end')
)
->andWhere(
$queryBuilder->expr()->in('t2.orderStatus', ':status')
)
->setParameters(
[
':start' => $startDate->format('Y-m-d H:i:s'),
':end' => $endDate->format('Y-m-d H:i:s'),
':status' => ['pending', 'shipped']
]
)
->getQuery();
$results = $query->getArrayResult();
查询有效,但仅当我更改选择数组时:
例如:
->select(
[
't1.id',
't2.id'
]
)
而且很奇怪。。。
这项工作:
->select(
[
'SUM(t1.quantity) AS quantity_t1',
'SUM(t1.amount - t1.promotionDiscount) AS amount_t1'
]
)
这也是:
->select(
[
't2.currency AS currency_t2',
]
)
但是。。这不起作用:
->select(
[
'SUM(t1.quantity) AS quantity_t1',
't2.currency AS currency_t2',
]
)
为什么?在SQL查询中不能混合使用聚合和非聚合 因为聚合将返回一个值。 非聚合将返回每个值 如何在响应中混合这些结果 另一个问题是,在DQL中使用
ROUND()
函数。但是这个函数不存在,你必须
请参阅。好的,谢谢。。但是,当我删除非合计选择行(t2.currency as currency_t2)时,它也不起作用…我从条令中得到了一个例外。。。“预期已知函数已被绕过”原则中没有圆函数。。。您必须创建它,请参见此处: