【发布时间】:2012-10-10 20:44:27
【问题描述】:
我正在使用PropelORM 1.6 并为项目实施某种 GIS 服务。
在数据库 (MySQL) 中,对于坐标,我使用 POINT 字段类型来存储不同项目的坐标。
在用于构建表模型的schema.xml 中,我已将此 (POINT) 字段设置为VARCHAR(255),因为尚不支持 AFAIK 空间数据类型。
使用Criteria::CUSTOM 组织该字段的选择查询是可以的,但是当我想更新这个字段时,使用众所周知的GeomFromText 和Propel,我得到下一个错误:
警告:PDOStatement::execute(): SQLSTATE[22003]:数值超出范围:1416 无法从您发送到 /var/www/.../propel/util/ 中的 GEOMETRY 字段的数据中获取几何对象BasePeer.php 在第 425 行
我正在使用设置字段值
$object->setGeo("GeomFromText( 'POINT(48.211055 16.383728)' )");
我想这个字符串被 ORM 当作字符串值对待,GeomFromText 没有被当作应有的函数对待。
很遗憾,没有Criteria::CUSTOM 用于设置字段值。
如何使用 PropelORM 更新这些字段?
更新:在ZendFramework 中有Zend_Db_Expr 用于此类任务,也许PropelORM 中有类似的东西?
【问题讨论】:
标签: php mysql pdo propel spatial-index