在CakePHP中保存空间数据


Saving spatial data in CakePHP

我有一个问题保存空间数据在CakePHP与saveAll()。我真的不想手动编写查询(在CakePHP中处理空间数据),因为有许多模型被保存。

我也读了这个CakePHP和MySQL空间扩展,但当我尝试做同样的事情时,$db->expression()返回一个stdClass。

这是打印出来的返回对象:

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

如果我使用这个对象,它是在CakePHP和MySQL空间扩展使用的方式,并试图保存它与saveAll()我得到这个错误:

错误:不能使用stdClass类型的对象作为数组
文件:/www/s/t/u47728/public_html/lib/Cake/Model/Model.php
线:2221

如果我使用value属性,它在查询中被转义,所以它变成了一个字符串。然后我得到这个错误:

错误: SQLSTATE[22003]: Numeric value out of range: 1416无法从发送到geometry字段的数据中获取几何对象

是否支持表达式?

显然同样适用于save()函数和其他....还saveField ()

转换这一行:

$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(经纬度)

不能评论正确答案,因为我的名气不够。