Rau*_*aul 8 native doctrine-orm
我正在尝试使用Doctrine 2进行本机查询..但我不能让它工作..
$q = "SELECT * FROM user_recent_activity WHERE id = {$user->id}";
$rsm = new \Doctrine\ORM\Query\ResultSetMapping;
$query = $this->_em->createNativeQuery($q, $rsm);
$result = $query->getResult();
Run Code Online (Sandbox Code Playgroud)
这是返回空数组..我不确定它是如何工作的"ResultSetMapping",但我不能用这个查询映射,就像我在doctrine网站的例子中看到的那样,因为user_recent_activity它不是一个表,它是一个像这个:
id user_id type created_at
12 5 opinion 2011-02-22 23:29:00
2 2 vote 2011-01-30 14:16:51
Run Code Online (Sandbox Code Playgroud)
id代表不同的对象,所以,不是外键..
那么,是否可以对Doctrine 2进行正常查询?..我变得疯了..
谢谢
如果您从查询中获取行和列,那么它应该是一个视图或表.
您需要使用rsm将结果映射到本机sql查询的实体.
$rsm->addEntityResult('UserRecentActivity', 'u');
$rsm->addFieldResult('u', 'id', 'id');
$rsm->addFieldResult('u', 'user_id', 'user_id');
$rsm->addFieldResult('u', 'type', 'type');
$rsm->addFieldResult('u', 'created_at', 'created_at');
Run Code Online (Sandbox Code Playgroud)
而且你也应该拥有合适的实体.
有关更多详细示例,请查看http://www.doctrine-project.org/docs/orm/2.0/en/reference/native-sql.html.
更新:
如果视图包含来自多个表的结果,则可以使用addJoinedEntityResult()方法将结果映射到其各自的实体.您需要相应地定义实体并将结果映射到它们的字段.
此方法可能最终会出现部分对象,因此应谨慎使用以避免数据损坏.
有关部分对象的信息:http://www.doctrine-project.org/docs/orm/2.0/en/reference/partial-objects.html
| 归档时间: |
|
| 查看次数: |
18652 次 |
| 最近记录: |