Как использовать тип Point или Geometry в Datamapper (codeigniter) - PullRequest
1 голос
/ 11 марта 2011

Я использую codeigniter и datamapper для создания службы API (на mysql), и часть этого включает в себя геолокацию - однако я не могу найти обходной путь для использования точечного типа данных.Если я пытаюсь вставить GeomFromText, система воспринимает его как строку.

Может кто-нибудь помочь?

Ура, Марк.

Ответы [ 3 ]

1 голос
/ 10 апреля 2015

Как описано в Руководстве пользователя 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;
1 голос
/ 19 июля 2011

Попробуйте

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);
0 голосов
/ 24 июля 2011

Используйте FLOAT в качестве типа данных вашей базы данных.

...