I have a strange problem with multiple select fields. This is my query:
$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();
The query works, but only If I change my select array:
For example like this:
->select(
[
't1.id',
't2.id'
]
)
And very strange... This works:
->select(
[
'SUM(t1.quantity) AS quantity_t1',
'SUM(t1.amount - t1.promotionDiscount) AS amount_t1'
]
)
And this too:
->select(
[
't2.currency AS currency_t2',
]
)
But .. this does not work:
->select(
[
'SUM(t1.quantity) AS quantity_t1',
't2.currency AS currency_t2',
]
)
Why?