【发布时间】:2014-08-29 09:08:56
【问题描述】:
我正在为我的测试应用程序使用 Doctrine2 和 CodeIgniter2。我的数据库中有一个表,其中存储了所有地理位置的字段
- 姓名
- 纬度
- 经度
- 已创建(时间戳)
我看到通过 hasrsine 公式选择位置的 sql 语句看起来像
(as mentioned in another answer)
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;
现在我发现使用创建查询生成器很难做到这一点。我不确定 DQL 或 querybuilder 是否支持三角函数。我的数据库也有可能被迁移到 postgre 或者可以继续使用 MySql(是的,这真的很痛苦),因为这个决定是我无法控制的。
我被告知的只是使用学说的方法来实现这一点,因此一旦数据库迁移到任何学说支持的平台,数据库将在未来变得可扩展。我知道这很荒谬。但是真的可以使用数据库中的经纬度值来查询地理位置数据吗?
问候,
阿肖克·斯里尼瓦桑
【问题讨论】:
-
学说的link 清楚地表明数据库平台是不能随时改变的。作为一名开发人员,这对我来说是一个好消息。但是我仍然无法找到一个体面的教程来实现 DQL 语言的三角函数。任何帮助,将不胜感激!问候, Ashok Srinivasan
标签: mysql postgresql doctrine-orm geolocation codeigniter-2