2016-10-07 33 views
0

我在Symfony的2库执行以下本地查询:学说2(Symfony的)结果集映射总是空

$sql = "SELECT f.id, f.title, 'hi' AS custom_field FROM my_feed f"; 

$em = $this->getEntityManager(); 
$rsm = new \Doctrine\ORM\Query\ResultSetMapping($em); 
$rsm->addEntityResult('MedicalCoreBundle:Feed', 'f'); 
$rsm->addFieldResult('f', 'id', 'id'); 
$rsm->addFieldResult('f', 'title', 'title'); 
$rsm->addFieldResult('f', 'custom_field', 'custom_field'); 

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

我创建了非映射属性custom_field及其getter和设置者getCustomFieldsetCustomField中的Feed实体。

映射字段水分正常,但是当我添加custom_field RSM时出现以下错误:Notice: Undefined index: custom_field [...] in symfony\..\AbstractHydrator.php

实体代码

// non mapped field 
private $custom_field; 

public function getCustomField() 
{ 
    return $this->custom_field; 
} 

public function setCustomField($number) 
{ 
    $this->custom_field = (int) $number; 

    return $this; 
} 

我到底做错了什么?

+1

只是一个建议:会发生什么,如果你驼峰您的非映射字段作为后续'customField'? (在你的实体中) –

+0

它不再显示错误,但字段值始终为NULL。它工作,如果我使用'$ query-> getArrayResult()'虽然 –

+0

添加MedicalCoreBundle:饲料实体代码 –

回答

0

您应该映射custom_field或使用addScalarResult代替addFieldResult

... 
$rsm->addScalarResult('custom_field', 'custom_field'); 
... 

结果会像

[ 
    [0=>entity, 'custom_field'=>custom_field value], 
    [0=>entity, 'custom_field'=>custom_field value], 
    ... 
] 
+0

是的,但你有一个不同的数据结构在最后,并且必须亲手水合实体... –

+0

据我所知,现在有内部工具来保湿你的方式想。 –

0

Relatvie你的错误,你似乎有一个˚F,而不是˚F在custom_ ˚F ield地方。

+0

这是一个错字。我确实有正确的字段名称。请注意,它得到水化与查询 - > getArrayResult() –