Использование постгисных функций географии от Laravel.

У меня есть Laravel Backend для управления своего рода плагином. Я использую postgresql с расширением postgis. Из оболочки postgres я могу выявлять функции postgis. Однако, когда я пытаюсь использовать те же функции из моего контроллера laravel, я получаю неопределенные ошибки в столбцах. Как вы можете видеть из моих примеров, я не пытаюсь что-либо запросить из базы данных. У меня в памяти уже есть две точки, между которыми я пытаюсь найти расстояние.

Вот запрос:

SELECT ST_Distance(ST_Transform(ST_GeomFromText('POINT(-72.1235 42.3521)',4326),2163),ST_Transform(ST_GeomFromText('LINESTRING(-72.1260 42.45, -72.123 42.1546)', 4326),2163));

Из оболочки получаю правильный вывод
выход оболочки

Однако при попытке выполнить необработанный оператор SQL из laravel

DB::select ( DB::raw( 'SELECT ST_Distance(ST_Transform(ST_GeomFromText("POINT(-72.1235 42.3521)",4326),2163),ST_Transform(ST_GeomFromText("LINESTRING(-72.1260 42.45, -72.123 42.1546)", 4326),2163))' ) );

выходной сигнал

У меня есть предельные знания как в laravel, так и в postgresql, поэтому очень вероятно, что я делаю что-то явно не так. Однако я не смог найти свои ресурсы по использованию postgis из laravel. Любая помощь очень ценится!

2

Решение

Просто: используйте первый пример SQL для второго. Во втором примере используются некорректные символы цитирования (' а также ").

Как правило для PostgreSQL, используйте только двойные кавычки (например, "MyTable") для объектов базы данных, таких как таблицы, имена столбцов и т. д., и одинарные кавычки (например, 'a string') для строковых литералов, например text а также character varying (n),

Первый пример правильно использовал строковый литерал 'POINT(-72.1235 42.3521)', но второй использовал "POINT(-72.1235 42.3521)" что объясняет, почему он искал объект базы данных с таким именем, чего, очевидно, нет.

2

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]