Postgis ST_D с функцией в запросе laravel (люмен) - PullRequest
0 голосов
/ 19 сентября 2018

Я обнаружил проблему с постгис-функциями внутри компоновщика запросов laravel (lumen).

Версия Lumen: 5.6

Postgres: 9.6.9 с 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

1 Ответ

0 голосов
/ 19 сентября 2018

Здесь геометрия должна передаваться как WKB, а не в формате WKT.

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

Надеюсь, это поможет.

...