Doctrin2nativeQueryの使用方法を理解しようとしています。
次の属性を持つ単純なスタッフクラスを作成しました。
id(id)userName(username)lastName(last_name)email(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) "abc@druid.dk" ["isAdmin"] => NULL ["conferences"] => array(0){} ["roles"] => array(0){}}
userNameとlastNameが両方ともNULLであるのに、id、email、およびpasswordに正しい値が含まれていることに注意してください。
何故ですか?
助けてくれてありがとう。私は少し混乱しています。Doctrineのドキュメントにはこのような例が見当たらないので、何かを誤解している可能性があります。最も可能性が高い...:)