Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/opengl/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 条令/MySQL:结果映射中缺少字段_Php_Mysql_Symfony_Doctrine - Fatal编程技术网

Php 条令/MySQL:结果映射中缺少字段

Php 条令/MySQL:结果映射中缺少字段,php,mysql,symfony,doctrine,Php,Mysql,Symfony,Doctrine,我有一个本机查询,希望用查询结果填充ResultsMapping对象。 一切正常,但字段“距离”无效。结果数组中的字段始终为空。当我直接在MySQL中运行查询时,会有“距离”的结果,所以我想我的SQL是可以的 class PlaceRepository extends EntityRepository { public function getAllWithMainImage($lat, $lon) { try { $rsm

我有一个本机查询,希望用查询结果填充ResultsMapping对象。 一切正常,但字段“距离”无效。结果数组中的字段始终为空。当我直接在MySQL中运行查询时,会有“距离”的结果,所以我想我的SQL是可以的

class PlaceRepository extends EntityRepository
{
    public function getAllWithMainImage($lat, $lon)
    {
        try
        {
            $rsm = new ResultSetMapping;
            $rsm->addScalarResult('slug', 'slug');
            $rsm->addScalarResult('title', 'title');
            $rsm->addScalarResult('rating', 'rating');
            $rsm->addScalarResult('visited_at', 'visited_at');
            $rsm->addScalarResult('img', 'img');
            $rsm->addScalarResult('distance', 'distance');

            return $this->getEntityManager()
                ->createNativeQuery('SELECT p.slug, p.title, p.rating, p.visited_at, pp.file AS img, ROUND(GLength(
                        LineString(
                            p.place_point, 
                            GeomFromText("POINT(:lat :lon)")
                        )
                    ) * 111.12, 1) AS distance
                    FROM place p 
                    LEFT JOIN place_picture AS pp
                    ON p.id = pp.place_id
                    GROUP BY p.id
                    ORDER BY distance
                    LIMIT 20', $rsm)
                ->setParameter('lat', $lat)
                ->setParameter('lon', $lon)
                ->getResult();
        }
        catch(\Doctrine\ORM\NoResultException $e)
        {
            return false;
        }
    }
}
从Crontroller调用的存储库函数:

class PlaceRestController extends Controller
{
    public function getPlacesAction(ParamFetcher $paramFetcher)
    {
        $view = FOSView::create();
        $view->setHeader('Access-Control-Allow-Origin', '*');
        $em = $this->getDoctrine()->getManager();
        $data = $em->getRepository('TouringPlaceBundle:Place')->getAllWithMainImage(48.39227479328352, 9.985520839691162); //hard-coded for debugging
        print_r($data);  //… [img] => xzz.jpg, [distance] =>
        if($data)
        {
            $view->setStatusCode(200)->setData($data);
        }
        return $view;
    }
}

我的错误在哪里?

您能添加调用此方法的代码部分吗? 返回值在哪里?在实体中


即使我不这么认为,问题也可能来自倍数引号,因此:lat和:lon不会更改为您希望的值。您是否已检查探查器以确保它们已被替换?

刚刚添加了更多代码。返回值将转到ResultsMapping中的标量结果。它将由FOSRestBundle转换为JSON(我把代码附在后面是我的主要帖子)。:lat和:lon未正确更换。奇怪的是探查器中的[Display runnable query]显示了正确的语句(如前所述,我已经测试过了)。