Я следовал этому руководству , чтобы добавить point
тип в Учение.
Вот как я определяю поле координат в сущности:
/**
* @ORM\Column(type="point", nullable=true)
*/
private $coordinates;
И вот как я пытаюсь сохранить сущность:
$obj = new GeoPoint();
$obj->setAddress('Test');
$obj->setCoordinates(new Point(40.7603807, -73.9766831));
$manager->persist($obj);
$manager->flush();
Моя конфигурация:
doctrine:
dbal:
types:
point: Viny\PointType
driver: 'pdo_mysql'
server_version: '5.7'
charset: utf8mb4
default_table_options:
charset: utf8mb4
collate: utf8mb4_unicode_ci
url: '%env(resolve:DATABASE_URL)%'
mapping_types:
point: point
orm:
auto_generate_proxy_classes: '%kernel.debug%'
naming_strategy: doctrine.orm.naming_strategy.underscore
quote_strategy: backend_lib.orm.quote_strategy
auto_mapping: true
mappings:
App:
is_bundle: false
type: annotation
dir: '%kernel.project_dir%/src/Entity'
prefix: 'App\Entity'
alias: App
Определение столбца БД результата:
`coordinates` point DEFAULT NULL,
В результате я получаю:
Произошла исключительная ситуация при выполнении 'INSERT INTO geo_point
(address
, coordinates
) VALUES (?,?)' С параметрами ["Test", "POINT (-73.976683 40.760381)"]:
SQLSTATE [22003]: числовое значение вне диапазона: 1416 Невозможно получить геометрию
объект из данных, которые вы отправляете в поле ГЕОМЕТРИЯ
Окончательный запрос:
INSERT INTO geo_point
(address
, coordinates
) VALUES ('Test', 'POINT (-73.976683 40.760381)');