我在我的测试应用程序中使用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;
现在我发现使用create query builder很难做到这一点。我不确定DQL或querybuilder是否支持三角函数。还有可能我的数据库将被迁移到postgre或者可以继续使用MySql(是的,这真的是后面的痛苦),因为这个决定是我无法控制的。
所有我被告知的是使用doctrine的方法来实现这一点,因此一旦迁移到任何一个学说支持的平台,db将在未来变得可扩展。我知道这很荒谬。但是,是否真的可以使用数据库中的纬度和经度值来查询地理位置数据?
此致
Ashok Srinivasan
答案 0 :(得分:0)
DQL仅提供following functions:
但是,您可以创建自己的函数(例如弧度)Adding your own functions to the DQL language。