如何防止CakePHP在保存时转义数据?

如何防止CakePHP在保存时转义数据?,php,postgresql,cakephp,postgis,Php,Postgresql,Cakephp,Postgis,我正在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'

我正在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 insert语句中的引号

有什么建议吗

编辑:

在我做
$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);
INSERT INTO locations (title,company_id,state_id,poly,point) 
VALUES ('$title',$company_id,$state_id,ST_GeomFromText('$geom',4269),$point) RETURNING id;

因为ST_GeomFromText被“引用”,PostgreSQL会抛出一个错误,并且不会插入几何体。

我的问题的解决方案不是基于CakePHP的,而是PostgreSQL

通过向查询添加“返回id”,如下所示:

INSERT INTO locations (title,company_id,state_id,poly,point) 
VALUES ('Some Title',5,23,'ST_GeomFromText('$geom',4269)',POINT(-72.342,102.23455);
INSERT INTO locations (title,company_id,state_id,poly,point) 
VALUES ('$title',$company_id,$state_id,ST_GeomFromText('$geom',4269),$point) RETURNING id;

查询不再返回空数组,现在返回它刚刚创建的行的ID

我的问题的解决方案不是基于CakePHP的,而是PostgreSQL的

通过向查询添加“返回id”,如下所示:

INSERT INTO locations (title,company_id,state_id,poly,point) 
VALUES ('Some Title',5,23,'ST_GeomFromText('$geom',4269)',POINT(-72.342,102.23455);
INSERT INTO locations (title,company_id,state_id,poly,point) 
VALUES ('$title',$company_id,$state_id,ST_GeomFromText('$geom',4269),$point) RETURNING id;

查询不再返回空数组,现在返回它刚刚创建的行的ID

通过
$this->ModelName->getLastInsertID()您可以获取最后插入的ID。因此,保存后,您可以调用此代码获取其ID。

通过
$this->ModelName->getLastInsertID()您可以获取最后插入的ID。因此,保存后,您可以调用此代码获取其ID。

查看文档中的原子查询包装器updateAll()。查看文档中的原子查询包装器updateAll()。