Ответ по теме:
- или сделайте поле lastPrice и храните последнюю цену там (ну или через кастомный гидратор ее в поле продукта вставляйте)
- или выбирайте необходимые данные голым SQL/DQL в DTO объекты,
- или на крайний — отдельно выбирайте последние цены для ваших товаров, но тут по сути некоторое подобие второго варианта
Получать последнюю цену в массив цен — некорректная и очень поганая задумка, даже если у вас получится сделать это. Вы получите "битый" бизнес-объект и вообще все это плохо и не удобно и не правильно.
Совет по запросу:
Лучше сделайте не вложенным запросом, а через джойн
SELECT product.*, last_prices.*
FROM product
LEFT JOIN (
SELECT product_id AS id, max(id) as price_id
FROM price
GROUP BY product_id
) last_prices ON last_prices.id=product.id