laravel(流明)查询中的Postgis ST_DWithin函数

问题描述 投票:1回答:1

我在laravel(流明)查询构建器中发现了postgis函数的问题。

流明版:5.6

Postgres:9.6.9 with postGIS

我有一个有效的代码:

$sql = "ST_DWithin(location ,'POINT($lat $lon)', $distance)";
$query->whereRaw($sql);

这有效,但我想通过参数绑定传递参数:

$sql = "ST_DWithin(location ,'POINT(? ?)', ?)";
$query->whereRaw($sql, [$lat, $lon, $distance]);

乍一看看起来不错,但它返回一个错误: Invalid parameter number: parameter was not defined (SQL: select * from "my_table" where ST_DWithin(location ,'POINT(123 123)', 1000)

我尝试了其他组合,这有效:

$point = 'POINT($lat $lon)';
$sql = "ST_DWithin(location ,?, ?)";
$query->whereRaw($sql, [$point, $distance]);

所以问题似乎与POINT功能

php laravel postgresql postgis
1个回答
0
投票

这里几何应该作为WKB传递,而不是WKT格式。

select * from "my_table" where ST_DWithin(location ,ST_GeomFromText('POINT(123 123)') , 1000)

希望这会有所帮助。

© www.soinside.com 2019 - 2024. All rights reserved.