Lorsque j'exécute une requête PostgreSQL contenant ::geometry
casting, je reçois un type "geometry" does not exist
erreur. J'utilise php5-pgsql V5.3.10, php5-fpm 5.4.13, Laravel 4, Postgresql 9.1, PostGIS 2.0.1 sur Ubuntu 12.04. geometry
est spécifique à PostGIS.
Sans le casting, la requête fonctionne bien. La requête originale fonctionne également bien lorsqu'elle est interrogée directement dans la base de données PostgreSQL à l'aide de pgAdmin3. Comment cela se fait-il ?
Requête
$busstops = DB::connection('pgsql')
->table('locations')
->select(DB::raw('geog::geometry as lat, geog::geometry as lng'))
->get();
Requête sans casting (Pas d'erreurs)
$busstops = DB::connection('pgsql')
->table('locations')
->select(DB::raw('geog as lat, geog as lng'))
->get();
Erreur :
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 géométrie
List of data types
Schema | Name | Description
--------+----------+-----------------------------------------
public | geometry | postgis type: Planar spatial data type.
(1 row)