0

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のドキュメントにはこのような例が見当たらないので、何かを誤解している可能性があります。最も可能性が高い...:)

4

1 に答える 1

2

パラメータが入れ替わります。これを試して:

$rsm->addFieldResult('s', 'username', 'userName');
$rsm->addFieldResult('s', 'last_name', 'lastName');
于 2011-12-08T23:49:36.060 に答える