如何在CakePHP 3中使用postGIS

爱默生

我们正在使用Postgres数据库运行CakePHPv3.x。我需要选择一些经度和纬度在距另一点X距离之内的记录。PostGIS具有执行此操作的功能,但似乎必须正确处理原始SQL查询才能使用它。

我并没有寻求帮助来编写原始查询,但是我正在寻找有关原始查询方法是否是在充分利用框架的同时使用此扩展的正确方法的确认。我搜索并没有找到任何库来扩展CakePHP ORM来包括此库。也许还有我没有想到的第三种选择。

[注意:这不起作用...]

public function fetch()
{
    $maxMetersAway = 10 * 1000;
    $lat = $this->request->query['lat'];
    $lng = $this->request->query['lng'];

    $stops = $this->Stops->find('all')
        ->where("ST_DWithin( POINT($lng,$lat), POINT(Stops.lng,Stops.lat), $maxMetersAway")
        ->toArray();

    $this->set(['stops'=>$stops, '_serialize' => true]);
}
克里斯·米尔克

我得到了与此相关的CakePHP查询:

$stops = $this->Stops->find('all')
        ->where(['ST_DWithin( ST_SetSRID(ST_MakePoint(' . $longitude . ', ' . $latitude . '),4326)::geography, ST_SetSRID(ST_MakePoint(Stops.longitude, Stops.latitude),4326)::geography, ' . $maxMetersAway . ')'])
        ->toArray();

更新:原始版本实际上无法$maxMetersAway正常使用。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

Cakephp3,如何在cakephp3中使用where子句和内部联接?

来自分类Dev

如何在CakePHP中使用Oracle

来自分类Dev

如何在CakePHP 3.x中使用hybridauth插件?

来自分类Dev

如何在事件中使用Cakephp 3的Auth组件

来自分类Dev

如何在事件中使用Cakephp 3的Auth组件

来自分类Dev

如何在CakePHP 3.0中使用自己的外部类?

来自分类Dev

如何在cakephp 3中的链接中使用内联css的跨度

来自分类Dev

如何在CakePHP 3中使用电子邮件传输类“ Debug”

来自分类Dev

如何在cakephp中编写SQL查询?

来自分类Dev

如何在cakephp中设置默认时区?

来自分类Dev

如何在Cakephp 3.0中读写会话

来自分类Dev

如何在CakePHP查询中创建`IN`子句?

来自分类Dev

如何在cakephp中运行子查询

来自分类Dev

如何在连接表中查找Cakephp?

来自分类Dev

如何在CakePHP插件中实现ACL

来自分类Dev

如何在CakePHP中重写URL

来自分类Dev

如何在cakephp中设置时区?

来自分类Dev

如何在CakePHP中实现搜索分页

来自分类Dev

如何在cakephp中获取URL参数?

来自分类Dev

如何在cakephp中编写更新查询

来自分类Dev

如何在 CakePHP 中强制插入?

来自分类Dev

如何在cakephp中设置cronjobs

来自分类Dev

如何在CakePHP模型中使用内部联接

来自分类Dev

如何在CakePHP Shell中使用Ratchet Websocket

来自分类Dev

我们如何在Cakephp中使用SoapClient?

来自分类Dev

CakePHP 3.8:如何在控制器中使用uasort()

来自分类Dev

我如何在cakephp形式中使用onblur函数?

来自分类Dev

如何在CakePHP中使用HttpSocket执行xml请求

来自分类Dev

如何在CakePHP中使用自定义路由?