2

::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を使用しています。geometrytype は 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)
4

1 に答える 1