我在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
函数上
答案 0 :(得分:0)
此处的几何图形应以WKB格式而不是WKT格式传递。
select * from "my_table" where ST_DWithin(location ,ST_GeomFromText('POINT(123 123)') , 1000)
希望这会有所帮助。