1: почему псевдоним таблицы 'i' вместо 'p'?
2: почему 'num_a' в предложении with не заменен на 'i__0', какисправил это?
На оба вопроса просто отвечают: Doctrine использует собственные псевдонимы для запроса.Вам не нужно знать эти псевдонимы, так как они не будут влиять на вас, и вам не нужно будет работать с ним.
Даже если Doctrine называет псевдоним i__0
, вы можете получить доступ к атрибуту с помощью своего пользовательского псевдонима, например $yourObject->num_a
будет иметь правильное значение, а именно результат count(p.product_id)
.
Просмотр вывода вашего запроса является полезной функцией отладки, но полагаться на него внутри приложения бессмысленно, поскольку эти значения используются только для внутренних механизмов Doctrine.