Я обычно работаю с MySQL, поэтому PostgreSQL - это для меня что-то новое
Я пытаюсь использовать PostGIS в своих запросах,
SELECT ST_X(g.geomout), ST_Y(g.geomout) FROM geocode('?', 1) as g
он работает, как и должен, если явыполнить запрос в терминале, но не из Laravel
В Laravel я использую \DB::connection('pgsql')->select(...
, но он не может найти функцию geocode
SQLSTATE [42883]: не определенофункция: 7 ОШИБКА: геокод функции (неизвестно, в тегере) не существует
ЛИНИЯ 1: ВЫБРАТЬ ST_X (g.geomout), ST_Y (g.geomout) ОТ геокода ('?', 1) ... СОВЕТ:Ни одна функция не соответствует заданному имени и типу аргумента.Возможно, вам придется добавить явные приведения типов.(SQL: SELECT ST_X (g.geomout), ST_Y (g.geomout) FROM с геокодом ('54 North Winter Street Columbus, OH, 43015 ', 1) As g)
SQLSTATE [42883]: неопределенная функция: 7 ОШИБКА: геокод функции (неизвестно, в тегере) не существует
ЛИНИЯ 1: ВЫБРАТЬ ST_X (g.geomout), ST_Y (g.geomout) ОТ геокода ('?', 1) ... СОВЕТ: НетФункция соответствует заданному имени и типу аргумента.Возможно, вам потребуется добавить явные приведения типов.
, но этот запрос работает нормально в терминале
SELECT ST_X(g.geomout), ST_Y(g.geomout)
FROM geocode('54 North Winter Street Columbus, OH, 43015', 1) As g
Расширение PostGIS включено, если я запускаю:
\DB::connection('pgsql')->select("SELECT postgis_full_version()")
Я получу результат с информацией о версии
search_path
имеет значение "$user", public, postgis
, изначально оно было "$user", public
, ничего не изменилось
Я также пытался использовать public.geocode
( Невозможно вызвать функцию postgres & postgis в построителе запросов laravel 4 ), тот же результат
ОБНОВЛЕНИЕ:
У меня есть tiger_geocoder
расширение, geocode
определено там, мне нужно использовать tiger.geocode
, но тогда ST_X/ST_Y
не удастся, потому что они определены в public
Окончательный запрос выглядит как SELECT public.ST_X(g.geomout), public.ST_Y(g.geomout) FROM tiger.geocode(?, 1) As g
но теперь я получаю:
SQLSTATE [42883]: неопределенная функция: 7 ОШИБКА: функция soundex (неизвестно) не существует
как я могу определить все этифункции в одной схеме?
ОБНОВЛЕНИЕ 2:
В этом проблема, search_path
для соединения в Laravel не имеет всей этой информации, яt установлен на public
, хотя у меня есть путь со всеми схемами, если я получаю доступ к postgresql search_path
установлен на "$user", public, tiger, postgis
.Как мне сделать это глобальным?