::geometry
キャストを含む PostgreSQL クエリを実行すると、type "geometry" does not exist
エラーが発生します。Ubuntu 12.04でphp5-pgsql V5.3.10、php5-fpm 5.4.13、Laravel 4、Postgresql 9.1、PostGIS 2.0.1を使用しています。geometry
type は PostGIS 固有です。
キャストがなければ、クエリは正常に実行されます。pgAdmin3 を使用して PostgreSQL データベースに対して直接クエリを実行すると、元のクエリも正常に機能します。どうしてこれなの?
クエリ
$busstops = DB::connection('pgsql')
->table('locations')
->select(DB::raw('geog::geometry as lat, geog::geometry as lng'))
->get();
キャストなしのクエリ (エラーなし)
$busstops = DB::connection('pgsql')
->table('locations')
->select(DB::raw('geog as lat, geog as lng'))
->get();
エラー:
Exception: SQLSTATE[42704]: Undefined object: 7 ERROR: type "geometry" does not exist
LINE 1: select geog::geometry as lat from "locations"
^ (SQL: select geog::geometry as lat from "locations") (Bindings: array (
))
\dT ジオメトリ
List of data types
Schema | Name | Description
--------+----------+-----------------------------------------
public | geometry | postgis type: Planar spatial data type.
(1 row)