Doctrine orm 在Doctrine2中的本机查询中获取未映射字段

Doctrine orm 在Doctrine2中的本机查询中获取未映射字段,doctrine-orm,symfony,Doctrine Orm,Symfony,我在Symfony3和Doctrine2中有一个函数,它使用纬度和经度搜索最近的合作伙伴: public function findNearestPartner($lat,$lng) { $rsm=new ResultSetMappingBuilder($this->_em); $rsm->addRootEntityFromClassMetadata('AppBundle\Entity\Partner','p'); $sqlQuery="SELECT p.

我在Symfony3和Doctrine2中有一个函数,它使用纬度和经度搜索最近的合作伙伴:

public function findNearestPartner($lat,$lng) {

    $rsm=new ResultSetMappingBuilder($this->_em);
    $rsm->addRootEntityFromClassMetadata('AppBundle\Entity\Partner','p');

    $sqlQuery="SELECT p.*, (6371 * acos(cos(radians(:lat)) * cos(radians(p.latitude)) * cos(radians(p.longitude) - radians(:lng)) + sin(radians(:lat)) * sin(radians(p.latitude)))) AS distance
    FROM sp_partner p
    ORDER BY distance ASC
    LIMIT 0,1";

    $query=$this->_em
        ->createNativeQuery($sqlQuery,$rsm)
        ->setParameter('lat',$lat)
        ->setParameter('lng',$lng)
    ;

    return $query->getOneOrNullResult();
}
如您所见,我得到了最近的合作伙伴实体,但也有字段“距离”,我没有得到它(但它将非常有用)。有没有办法得到这个字段的值?
我阅读了文档(),但是我找不到任何对这个案例有用的东西。

您可以通过
addScalarResult
完成

$rsm=new ResultSetMappingBuilder($this->_em);
$rsm->addRootEntityFromClassMetadata('AppBundle\Entity\Partner','p');
$rsm->addScalarResult('distance', 'distance');
结果将是

array:2 [▼
  0 => Partner{...},
  distance => xxx
]