Laravel(lumen)查询中的Postgis ST_DWithin函数

时间:2018-09-19 06:16:58

标签: php laravel postgresql postgis

我在laravel(lumen)查询生成器中发现了postgis函数的问题。

流明版本:5.6

Postgres:使用PostGIS的9.6.9

我有一个有效的代码:

$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函数上

1 个答案:

答案 0 :(得分:0)

此处的几何图形应以WKB格式而不是WKT格式传递。

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

希望这会有所帮助。