Я пытаюсь сгенерировать nativeQuery, используя смешанное ResultSetMapping, которое содержит сущности и скалярные результаты. Например:Symfony2 - Доступ к объекту из ключа результата NativeQuery
$rsm = new ResultSetMapping();
$rsm->addEntityResult('MyBundle:Evaluation','e');
$rsm->addFieldResult('e','id','id');
$rsm->addScalarResult('company','company');
, когда я {{свалка()}} один из результатов запроса элементов, это выглядит следующим образом:
array:2 [▼
0 => Evaluation {▼
#id: 24
}
"company" => "INRA"
]
Таким образом, в результирующем массиве, компания отождествляется с ключ «компания», а мой объект оценки идентифицирован клавишей «0».
Мой вопрос: есть ли другой способ доступа к объектам, определенным в ResultSetMapping(), кроме как с их цифровым ключом? как ScalarResults?
Какова ваша фактическая проблема? ... – rubin
Ну, мой код работает, но заставлять делать что-то вроде $ result [0] вместо $ result ['оценка'], например, очень удручает. Предположим, у меня был более сложный пример с 10 различными EntityResults, запись $ result [8] не читается, и разработчику, видящему этот код, придется открыть класс репозитория, чтобы узнать, какой тип данных $ result [8] будет содержать. Более того, если кто-то добавляет другой результат сущности в начале запроса, все предыдущие ссылки на результат вызовут ошибки, потому что будет смещение. – alpadev
Я только что заметил ваш комментарий, вы можете представить более сложный пример с 2 или 3 объектами EntityResults? Кажется, у вас есть некоторые понятия неправильно. Когда вы извлекаете несколько элементов, вы делаете это для итерации через них с помощью цикла, каждый элемент должен иметь одинаковые свойства. Доступ непосредственно к элементу массива выглядит следующим образом: $ result [8] указывает, что в коде есть что-то неправильное. – lchachurski