【发布时间】:2014-09-07 12:20:58
【问题描述】:
我正在尝试执行一个 select 语句,以根据输入的 lat / lng 值选择最近的记录位置。我正在使用 phalcon 框架构建我的网络应用程序。
我按照https://developers.google.com/maps/articles/phpsqlsearch_v3?csw=1 的谷歌地图教程中教授的查询算法进行操作,但在尝试使用 phalcon 模型管理器重建它时遇到了一些问题。
来自 Google 的 select 语句
SELECT id, ( 3959 * acos( cos( radians(37) ) * cos( radians( lat ) ) * cos( radians( lng ) - radians(-122) ) + sin( radians(37) ) * sin( radians( lat ) ) ) ) AS distance FROM markers HAVING distance < 25 ORDER BY distance LIMIT 0 , 20;
这是我目前拥有的
$query = $this->modelsManager->createQuery("SELECT id, ( 3959 * acos( cos( radians(:locationlat:) ) * cos( radians( locationlat ) ) * cos( radians( locationlng ) - radians(:locationlng:) ) + sin( radians(:locationlat:) ) * sin( radians( locationlat ) ) ) ) AS distance FROM Listing HAVING distance < 25;");
$listing = $query->execute(array(
'locationlat' => '1.313022',
'locationlng' => '1.313022',
));
注意:在我的表中,每条记录都有一个locationlat,locationlng列(而不是谷歌教程中显示的lat/lng)
我在下面遇到了这个错误,我不知道它是什么。
Scanning error before '' when parsing: SELECT id, ( 3959 * acos( cos( radians(:locationlat:) ) * cos( radians( locationlat ) ) * cos( radians( locationlng ) - radians(:locationlng:) ) + sin( radians(:locationlat:) ) * sin( radians( locationlat ) ) ) ) AS distance FROM Listing HAVING distance < 25; (259)
这里有 phalcon 专家吗?
【问题讨论】: