将学说本机查询映射到无实体模型类

Shu*_*sky 3 php doctrine doctrine-orm

我正在尝试在学说中使用本机查询,现在创建了一些非常简单的东西:

$rsm = new ResultSetMapping();
$rsm->addEntityResult('ObjectA', 'a');
$rsm->addFieldResult('a', 'id', 'id');
$query = $em->createNativeQuery('SELECT * FROM table a', $rsm);
Run Code Online (Sandbox Code Playgroud)

我尝试使用此代码时,收到一个错误,指出 ObjectA 不是有效实体或映射的超类。这是完全正确的。我的问题是:有什么方法可以使对任何任意类(不是实体)的本机查询的疯狂结果,但仍然使用 Doctrine 的工具来做到这一点。

注意:我试图避免使用较低级别的 PDO。

谢谢你。

Taz*_*Taz 5

没有这样的东西,无论是在文档中还是在源代码中Doctrine\ORM\Query\ResultSetMapping(而且某些功能没有记录)。
我会使用标量结果并将查询结果映射回对象。像这样的东西:

$rsm = new ResultSetMapping();
$rsm->addScalarResult('a', 'a');
$rsm->addScalarResult('b', 'b');
$query = $em->createNativeQuery('SELECT a, b FROM table LIMIT 1', $rsm);
$result = $query->getSingleResult();
$a = new ObjectA();
$a->setA($result['a']);
// or
$a = new ObjectA($result); // with mapping passed to the constructor
Run Code Online (Sandbox Code Playgroud)