PostGISが有効になっているPostgreデータベースでDoctrine2でSymfonyを使用しています。次の構造を持つプロパティと近隣の2つのテーブルがあります。
class Property {
/**
* @ORM\Id
* @ORM\Column(type="integer")
* @ORM\GeneratedValue(strategy="AUTO")
*/
protected $id;
/**
* @ORM\Column(type="string")
*/
protected $address;
/**
* @var Point $geom
* @ORM\Column(type="Point", nullable=true)
*/
protected $geom;
}
class Neighborhood {
/**
* @ORM\Id
* @ORM\Column(type="integer")
* @ORM\GeneratedValue(strategy="AUTO")
*/
protected $gid;
/**
* @ORM\Column(type="string")
*/
protected $name;
/**
* @ORM\Column(type="string")
*/
protected $description;
/**
* @var Polygon $geom
*
* @ORM\Column(type="Polygon", nullable=true)
*/
protected $geom;
}
pgAdminIII では、正常に動作する次のクエリを記述できます。
SELECT address, neighborhood.name
FROM property
JOIN neighborhood
ON ST_Contains(neighborhood.geom, property.geom)
これをDQLでどのように記述できますか?結合の基本と Doctrine2 マッピングの注釈の追加は理解していますが、2 つのフィールドが等しくないため結合の方法がわかりません。結合を作成するには、ST_Contains 関数を使用する必要があります。空間データ型とマッピングに djlambert / doctrine2-spatial バンドルを使用しています。各テーブルを個別にクエリして、それぞれにマップを作成できますが、特定の近隣のすべてのプロパティを選択する方法がわかりません。