【发布时间】:2013-09-10 15:38:33
【问题描述】:
我正在一个 CakePHP 应用程序上做一些 PostGIS 工作。
因为我一直在使用一些数据库函数,所以我完成了原始的$this->query() 调用来插入数据。我现在需要获取插入查询结果的 ID,但 $this->query() 返回一个空数组。
这是我用于插入的查询:
INSERT INTO locations (title,company_id,state_id,poly,point)
VALUES ('$title',$company_id,$state_id,ST_GeomFromText('$geom',4269),$point);
问题是 Cake 试图将 'ST_GeomFromText('$geom',4269)' 作为字符串插入,我不知道如何让它删除它通过 $this->Location->save(); 准备的 SQL 插入语句中的引号。
有什么建议吗?
编辑:
在我做 $this->query(); 之前,我的 SQL 工作正常。这不是问题。
现在当我这样做时:
$this->Location->create();
$this->Location->set('poly',$poly);
... Set all the rest of the model fields ...
$this->Location->save();
生成的 SQL 如下所示:
INSERT INTO locations (title,company_id,state_id,poly,point)
VALUES ('Some Title',5,23,'ST_GeomFromText('$geom',4269)',POINT(-72.342,102.23455);
因为 ST_GeomFromText 被“引用”,PostgreSQL 抛出错误并且不插入几何。
【问题讨论】:
-
查看文档中的原子查询包装器 updateAll()。
标签: php postgresql cakephp postgis