如何在Datamapper中使用Point或Geometry类型(codeigniter)

时间:2011-03-10 21:04:13

标签: codeigniter geolocation point codeigniter-datamapper

我正在使用codeigniter和datamapper来构建API服务(在mysql上),其中一部分涉及地理定位 - 但是我似乎无法找到使用point数据类型的变通方法。如果我尝试插入GeomFromText,系统会将其视为字符串。

有人可以帮忙吗?

干杯, 标记

3 个答案:

答案 0 :(得分:1)

尝试

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");

在CodeIgniter中使用Datamaper(请参阅文档中“在更新中使用公式”的帮助)...

$point = new Point();
$point->update('location','geomfromtext("POINT(30.2 40.3)")',FALSE);

答案 1 :(得分:1)

如CodeIgniter用户指南中所述:

$this->db->set();

set function使您可以设置插入或更新的值。

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;

答案 2 :(得分:0)

使用FLOAT作为数据库数据类型。