С помощью Symfony 2.8.24, Учение 2 а также Учебно-постгисская библиотека Джсора, последний, чтобы заставить Доктрину ладить с пространственными типами, такими как геометрия, география и т. д.
Итак, у меня есть таблица со столбцом типа geometry(MultiPolygon, 3795)
по крайней мере, так pgAdmin III (Я использую OpenGeo pgAdmin, который включает в себя PostGIS расширение, наряду с plpgsql)
У меня есть таблицы с пространственной информацией, поэтому я создал свои объекты из этих таблиц через doctrine:mapping:import
а также doctrine:mapping:convert
команды, которые действительно создали соответствующие классы php без проблем.
ЭТА ПРОБЛЕМА пришел, когда я внес некоторые изменения в другие объекты в моих проектах, объекты, которые даже не имели атрибутов пространственного типа, после этого я попытался "doctrine:schema:update" "--force"
синхронизировать базу данных с моими новыми изменениями, и я получаю ошибку из заголовка
Geometry_type для пространственного столбца не может быть изменен (запрашиваемое изменение типа с «MULTIPOLYGON» на «GEOMETRY» для столбца «geom» в таблице «X»)
Фрагмент класса сущности, сгенерированный командами:
/**
* TableName
*
* @ORM\Table(name="TableName", indexes={@ORM\Index(name="sidx_table_name_geom", columns={"geom"})})
* @ORM\Entity
*/
class TableName {
/**
* @var integer
*
* @ORM\Column(name="gid", type="integer")
* @ORM\Id
* @ORM\GeneratedValue(strategy="SEQUENCE")
* @ORM\SequenceGenerator(sequenceName="table_name_gid_seq", allocationSize=1, initialValue=1)
*/
private $gid;
/**
* @var MULTIPOLYGON
*
* @ORM\Column(name="geom", type="geometry", options={"geometry_type"="MULTIPOLYGON", "srid"=3795}, nullable=true)
*/
private $geom;
}
Я пытался следовать это решение в github безрезультатно, хотя это была именно моя ситуация.
Любая помощь и понимание приветствуется.
Задача ещё не решена.
Других решений пока нет …