2015-10-13 82 views
1

我有2个非相关的实体:外部和内部。我需要联合选择实体的所有结果。我使用ResultSetMapping和本地SQL做到这一点:Symfony2错误:类Doctrine ORM EntityManager的对象无法转换为字符串

$em = $this->getDoctrine() 
     ->getManager()->getConnection(); 
$rsm = new \Doctrine\ORM\Query\ResultSetMapping(); 
    $rsm->addEntityResult('ExternalBundle:External', 'e'); 
    $rsm->addFieldResult('e', 'id', 'id'); 
    $rsm->addFieldResult('e', 'status', 'status'); 
    $rsm->addFieldResult('e', 'name', 'name'); 
    $rsm->addEntityResult('InternalBundle:Internal', 'i'); 
    $rsm->addFieldResult('i', 'id', 'id'); 
    $rsm->addFieldResult('i', 'status', 'status'); 
    $rsm->addFieldResult('i', 'name', 'name'); 
    $sql = "SELECT e.* 
FROM external_print e 
UNION 
SELECT i.* 
FROM internal_print i"; 
    $objects = $this->$em->createNativeQuery($sql, $rsm)->getResult(); 

我不断收到此错误:开捕致命错误:类学说的对象\ ORM \的EntityManager不能转换成字符串。

什么需要解决?

+0

删除$从$ EM函数:$ this-> EM – viktor77

+0

@ viktor77现在说注意:未定义property:em – user3793667

+0

试试这个:$ em = $ this-> container-> get('doctrine') - > getManager(); –

回答

1

你有一个代码错误,而不是

$objects = $this->$em->createNativeQuery($sql, $rsm)->getResult();

使用只是

$objects = $em->createNativeQuery($sql, $rsm)->getResult();

相关问题