doctrine2-пространственный как использовать многострочный - PullRequest
0 голосов
/ 12 ноября 2018

Я использую Symfony 4 и Doctrine2-Spatial . В документации Руководство по конфигурации написано:

Добавьте типы и функции, которые вам нужны, в файл конфигурации Symfony. Имена типов доктрин не прописаны жестко. "

А есть пример:

doctrine:
dbal:
    types:
        geometry:   CrEOF\Spatial\DBAL\Types\GeometryType
        point:      CrEOF\Spatial\DBAL\Types\Geometry\PointType
        polygon:    CrEOF\Spatial\DBAL\Types\Geometry\PolygonType
        linestring: CrEOF\Spatial\DBAL\Types\Geometry\LineStringType

Мне нужно использовать тип MultiLineString , но в каталоге CrEOF\Spatial\DBAL\Types\Geometry\ такого класса нет. Я добавил MultiLineStringType (копия LineStringType class) в мою директорию App\Doctrine и добавил строку в конфигурацию доктрины следующим образом:

multilinestring: App\Doctrine\MultiLineStringType

Затем в моем контроллере я делаю следующее:

$parser = new \CrEOF\Geo\WKT\Parser($multilinestring);
$geo = $parser->parse();
$path = new \CrEOF\Spatial\PHP\Types\Geometry\MultiLineString($geo['value']);
$route->setPath($path); // The multilinestring field type

Но потом, когда я сохранил свое учение, я получил исключение

Значения столбца Geometry должны реализовывать GeometryInterface

Пожалуйста, помогите мне. Что я делаю неправильно? Документация очень плохая ...

UPD: Если я помещу данные из нескольких строк в собственный SQL-запрос, например:

UPDATE Routes SET Path=PolyFromText(MULTILINESTRING (....)) WHERE Id=1

и затем получить данные через ORM $entity->getPath() Я получил нормальный CrEOF\Spatial\PHP\Types\Geometry\MultiLineString объект. Итак, я думаю, проблема в моем контроллере, где я пытаюсь установить объект MultiLineString.

1 Ответ

0 голосов
/ 12 ноября 2018

Вы можете просто изменить:

doctrine:
    dbal:
        types:
            geometry:   CrEOF\Spatial\DBAL\Types\GeometryType
            point:      CrEOF\Spatial\DBAL\Types\Geometry\PointType
            polygon:    CrEOF\Spatial\DBAL\Types\Geometry\PolygonType
            linestring: CrEOF\Spatial\DBAL\Types\Geometry\LineStringType

в это:

doctrine:
    dbal:
        types:
            geometry:        CrEOF\Spatial\DBAL\Types\GeometryType
            point:           CrEOF\Spatial\DBAL\Types\Geometry\PointType
            polygon:         CrEOF\Spatial\DBAL\Types\Geometry\PolygonType
            linestring:      CrEOF\Spatial\DBAL\Types\Geometry\LineStringType
            multilinestring: CrEOF\Spatial\DBAL\Types\Geometry\MultiLineStringType
...