私は codeigniter と datamapper を使用して (mysql で) API サービスを構築していますが、その一部には地理位置情報が含まれていますが、ポイント データ型を使用するための回避策が見つからないようです。GeomFromText を挿入しようとすると、システムはそれを文字列として扱います。
誰でも助けることができますか?
乾杯、マーク。
私は codeigniter と datamapper を使用して (mysql で) API サービスを構築していますが、その一部には地理位置情報が含まれていますが、ポイント データ型を使用するための回避策が見つからないようです。GeomFromText を挿入しようとすると、システムはそれを文字列として扱います。
誰でも助けることができますか?
乾杯、マーク。
試す
CREATE TABLE Points (
ID INT(10) PRIMARY KEY NOT NULL AUTO_INCREMENT,
location POINT NOT NULL,
SPATIAL INDEX(location)
) ENGINE= MYISAM
CodeIgniter では:
$this->db->set("location",'geomfromtext("POINT(30.2 40.3)")',false);
$this->db->insert("Points");
Datamaper を使用した CodeIgniter で (ドキュメントの「更新での数式の使用」のヘルプを参照してください)...
$point = new Point();
$point->update('location','geomfromtext("POINT(30.2 40.3)")',FALSE);
CodeIgniter ユーザーガイドで説明されているように:
$this->db->set();
set 関数を使用すると、挿入または更新の値を設定できます。
set() は 3 番目のパラメーター ($escape) を受け入れます。これは、FALSE に設定されている場合にデータがエスケープされるのを防ぎます。
$this->db->set('geo', "ST_GeomFromText('{$data['geo']}')", FALSE);
$this->db->insert('tableName');
return $this->db->insert_id() ? $this->db->insert_id() : FALSE;
データベースのデータ型として FLOAT を使用します。