原则2(Symfony)与自定义字段的结果集映射始终为空

原则2(Symfony)与自定义字段的结果集映射始终为空,symfony,doctrine-orm,Symfony,Doctrine Orm,我正在Symfony 2存储库中执行以下本机查询: $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->

我正在Symfony 2存储库中执行以下本机查询:

$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();
我已经在
Feed
实体中创建了非映射属性
custom_字段
及其getter和setter
getCustomField
setCustomField

映射字段已正确水合,但当我添加
自定义\u字段
RSM时,会出现以下错误:
注意:未定义索引:symfony\..\AbstractHydrator.php中的自定义\u字段[…]

实体代码

// non mapped field
private $custom_field;

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

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

    return $this;
}

我做错了什么?

与您的错误有关,您似乎在自定义字段中的某个地方有一个F而不是F

您应该映射
自定义字段
或使用
addScalarResult
而不是
addFieldResult

...
$rsm->addScalarResult('custom_field', 'custom_field');
...
结果看起来像

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

这是个打字错误。我确实有正确的字段名。请注意,使用query->getArrayResult()会使它变得更加复杂。这只是一个建议:如果将未映射字段的大小写为follow
customField
,会发生什么?(在实体中)不再显示错误,但字段值始终为空。如果我使用
$query->getArrayResult()
thoughAddMedicalRebundle:FeedEntityCode我添加了代码,它就可以工作了。Alwo试图避免实体、查询和rsm中的任何驼峰或下划线(customfield),并使用setCustomfield,但仍然会出现未定义的索引错误。是的,但最后您有不同的数据结构,必须手动对实体进行水合物化…正如我所知,现在有一些内部工具可以按照您想要的方式进行水合物化。