Сохранение пространственных данных в CakePHP

У меня проблема с сохранением пространственных данных в CakePHP с помощью saveAll (). Я действительно не хочу писать запрос вручную ( обработка пространственных данных в CakePHP ), поскольку количество сохраняемых моделей.

Также я прочитал этот CakePHP и MySQL Spatial Extension, но когда я попытаюсь сделать то же самое, $db->expression() возвращает stdClass.

Это распечатанный объект:

 stdClass Object ( [type] => expression [value] => GeomFromText('POINT(48.18879 18.527579999999944)') ) 

Если я использую этот объект так, как он используется в CakePHP и MySQL Spatial Extension и пытается сохранить его с помощью saveAll (), я получаю эту ошибку:

Ошибка : нельзя использовать объект типа stdClass как массив
Файл: /www/s/t/u47728/public_html/lib/Cake/Model/Model.php
Линия: 2221

Если я использую свойство value, он получает escape-код в запросе, поэтому он становится просто строкой. Затем я получаю эту ошибку:

Ошибка : SQLSTATE [22003]: числовое значение вне диапазона: 1416 Не удается получить объект геометрии из данных, отправляемых в поле GEOMETRY

Поддерживает ли saveAll () суждение выражения?

ОБНОВИТЬ

Очевидно, то же самое относится к функции save () и другим … Также saveField ()

Related of "Сохранение пространственных данных в CakePHP"

конвертировать эту строку:

 $this->data['Report']['position'] = $db->expression("GeomFromText('POINT(" . $this->data['Report']['lat'] . " " . $this->data['Report']['lng'] . ")')"); 

к:

 $this->data['Report']['position'] = (object) $db->expression("GeomFromText('POINT(" . $this->data['Report']['lat'] . " " . $this->data['Report']['lng'] . ")')"); 

Он должен работать.

Вы также должны изменить порядок своих данных.

Правильный путь: POINT (широта долготы)

Не могу прокомментировать правильный ответ, поскольку у меня недостаточно репутации.