2011-08-10 4 views
0

J'essaie de comprendre comment utiliser Doctrin 2 nativeQuery.Doctrine 2 native Requête addFieldResult sensibilité à la casse?

J'ai créé une classe simple du personnel avec les attributs suivants:

id (id) userName (nom d'utilisateur) lastName (last_name) email (email)

note les cas de chameau. names in() sont les noms des champs de la base de données. Pas cohérent et c'est à des fins de test.

lorsque je tente d'utiliser la requête native i définir les paramètres suivants:

$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]); 

quand je lance la requête i larguer un objet en utilisant l'installation de vidage et obtenir:

objet (stdClass) # 97 (10) {["CLASSE"] => chaîne (14) "Entités \ Personnel" ["id"] => int (1) ["userName"] => NULL ["firstName"] => NULL ["lastName"] => NULL ["mot de passe"] => string (5) "admin" ["email"] => chaîne (12) "[email protected]" ["isAdmin"] => NULL [" conférences "] => array (0) {} [" roles "] => array (0) {}}

notez comment id, email et mot de passe contiennent des valeurs correctes alors que userName et lastName sont tous les deux NULL.

Pourquoi est-ce?

Merci pour toute aide. Je suis un peu confus. Je ne vois aucun exemple de ce genre dans la documentation de Doctrine, alors peut-être que j'ai mal compris quelque chose. le plus probable ... :)

Répondre

2

Vos paramètres sont inversés. Essayez ceci:

$rsm->addFieldResult('s', 'username', 'userName'); 
$rsm->addFieldResult('s', 'last_name', 'lastName'); 
Questions connexes