1

CakePHP アプリケーションで PostGIS の作業を行っています。

私はいくつかのデータベース関数を扱ってきたので$this->query()、データの挿入を行うために raw 呼び出しを行いました。挿入クエリの結果の 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)'文字列として挿入しようとしていることです。また、Cake が準備する SQL 挿入ステートメントの引用符を削除する方法がわかりません$this->Location->save();

助言がありますか?

編集:

私がやっている前に$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 はエラーをスローし、ジオメトリを挿入しません。

4

2 に答える 2

0

経由$this->ModelName->getLastInsertID();で、最後に挿入された ID を取得できます。そのため、保存後にこのコードを呼び出して ID を取得できます。

于 2015-01-17T16:42:50.030 に答える