3

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

我的查询:

$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 访问它的值。是否可以仅为此查询将此列添加到实体中?

4

1 回答 1

2

如果要在 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 }} 

其中 object 是您的 Music 实体。

有关纯结果和混合结果的更多信息,请参见此处

于 2016-01-26T10:54:11.493 回答