я пытаюсь понять, как использовать 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, так что, возможно, я что-то неправильно понял. скорее всего... :)