如何在 Doctrine 本机查询的结果中获取非映射列

How to get non-mapped column in a result of Doctrine native query

如何从本机查询的结果中获取非映射列?

我的查询:

$query = $this->getEntityManager()->createNativeQuery(
            "SELECT m.id, m.title, MATCH(m.title) AGAINST('$slug') AS score "
            . "FROM music AS m "
            . "ORDER BY score DESC LIMIT 100", $rsm);

score 未映射到实体中,我无法从 Twig 访问它的值。是否可以仅针对此查询将此列添加到实体中?

如果你想在 Twig 模板中显示分数,你可以尝试以下步骤:

1) 将不带任何映射配置的 $score 属性添加到您的 Music 实体:

class Music {
    //Other mappings

    protected $score;

    //TODO: add getter/setter for $score
} 

2) 将其添加到您的 ResultSetMapper:

$rsm->addRootEntityFromClassMetadata('YourBundle:Music', 'm');
$rsm->addMetaResult('m', 'score', 'score', false, 'integer'); //first 'score' is your DB alias

3) 打电话给你的 search.html.twig:

{{ object.score }} 

其中对象是您的音乐实体。

可以找到有关纯结果和混合结果的更多信息 here