gpt4 book ai didi

php - 在 CakePHP 中保存空间数据

转载 作者:可可西里 更新时间:2023-11-01 07:03:36 25 4
gpt4 key购买 nike

我在使用 saveAll() 在 CakePHP 中保存空间数据时遇到问题。我真的不想手动编写查询(Handling spatial data in CakePHP),因为要保存的模型数量很多。

我也读过这个CakePHP and MySQL Spatial Extension但是当我尝试做同样的事情时,$db->e​​xpression() 返回一个 stdClass。

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

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

如果我按照在 CakePHP and MySQL Spatial Extension 中使用的方式使用此对象并尝试使用 saveAll() 保存它我收到此错误:

错误:无法将 stdClass 类型的对象用作数组
文件:/www/s/t/u47728/public_html/lib/Cake/Model/Model.php
线路:2221

如果我使用 value 属性,它会在查询中被转义,因此它只是一个字符串。然后我得到这个错误:

错误:SQLSTATE[22003]:数值超出范围:1416 无法从您发送到 GEOMETRY 字段的数据中获取几何对象

saveAll() 是否支持表达式?

更新

显然这同样适用于 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'] . ")')");

它应该可以工作。

关于php - 在 CakePHP 中保存空间数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16647641/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com