【发布时间】:2011-03-10 21:04:13
【问题描述】:
我正在使用 codeigniter 和 datamapper 来构建 API 服务(在 mysql 上),其中一部分涉及地理定位 - 但是我似乎找不到使用点数据类型的解决方法。如果我尝试插入 GeomFromText,系统会将其视为字符串。
谁能帮忙?
干杯, 标记。
【问题讨论】:
标签: codeigniter geolocation point codeigniter-datamapper
我正在使用 codeigniter 和 datamapper 来构建 API 服务(在 mysql 上),其中一部分涉及地理定位 - 但是我似乎找不到使用点数据类型的解决方法。如果我尝试插入 GeomFromText,系统会将其视为字符串。
谁能帮忙?
干杯, 标记。
【问题讨论】:
标签: codeigniter geolocation point codeigniter-datamapper
试试
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() 将接受第三个参数 ($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 作为您的数据库数据类型。
【讨论】: