Doctrine 2 Чувствительность к регистру запросов addFieldResult?

я пытаюсь понять, как использовать Doctrin 2 nativeQuery.

Я создал простой класс персонала со следующими атрибутами:

id (идентификатор) userName (имя пользователя) lastName (фамилия) email (электронная почта)

обратите внимание на случаи с верблюдами. имена в () — это имена полей базы данных. Не соответствует, и это специально для тестирования.

когда я пытаюсь использовать собственный запрос, я устанавливаю следующее:

$rsm = new \Doctrine\ORM\Query\ResultSetMapping();
$rsm->addEntityResult('Entities\Staff', 's');
$rsm->addFieldResult('s', 'id', 'id');
$rsm->addFieldResult('s', 'userName', 'username');
$rsm->addFieldResult('s', 'lastName', 'last_name');
$rsm->addFieldResult('s', 'password', 'password');
$rsm->addFieldResult('s', 'email', 'email');
$sql = 'SELECT id, s.username, last_name,  password, email from staff s ' ;
$query = $this->em->createNativeQuery($sql, $rsm);
$users = $query->getResult();
\Doctrine\Common\Util\Debug::dump($users[0]);

когда я запускаю запрос, я выгружаю объект с помощью средства дампа и получаю:

object(stdClass)#97 (10) { ["CLASS"]=> string(14) "Entities\Staff" ["id"]=> int(1) ["userName"]= > NULL ["firstName"]=> NULL ["lastName"]=> NULL ["password"]=> string(5) "admin" ["email"]=> string(12) "[email protected]" ["isAdmin"]=> NULL ["конференции"]=> массив(0) { } ["роли"]=> массив(0) { } }

обратите внимание, что идентификатор, адрес электронной почты и пароль содержат правильные значения, в то время как имя пользователя и фамилия имеют значение NULL.

Почему это?

Спасибо за любую помощь. я немного смущен. Я не вижу подобных примеров в документации Doctrine, так что, возможно, я что-то неправильно понял. скорее всего... :)


person Kim Gabrielsen    schedule 10.08.2011    source источник


Ответы (1)


Ваши параметры меняются местами. Попробуй это:

$rsm->addFieldResult('s', 'username', 'userName');
$rsm->addFieldResult('s', 'last_name', 'lastName');
person AmenAlan    schedule 08.12.2011