0

我试图弄清楚如何使用 Doctrin 2 nativeQuery。

我创建了一个简单的人员类,具有以下属性:

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 [“会议”]=> 数组(0){ } [“角色”]=> 数组(0){ } }

注意 id、email 和 password 如何包含正确的值,而 userName 和 lastName 都是 NULL。

这是为什么?

感谢任何帮助。我有点困惑。我在 Doctrine 文档中没有看到任何这样的例子,所以也许我误解了一些东西。最有可能... :)

4

1 回答 1

2

你的参数被切换了。尝试这个:

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