Codeigniter Active Record Select语句不是那么正常的语句

时间:2013-03-17 12:43:33

标签: php mysql codeigniter activerecord

是的,我承认这篇文章的主题并不完美。但是我现在不知道怎么说它。

我要做的是避免使用$this->db->query($sql);类型的语句。我更喜欢在主动记录方法中使用它,但我不确定如何做到这一点。

我的查询设置为

的概念
select loc.distance,
loc.user,
loc.lat,
loc.lon,
baseinfo.firstname,
baseinfo.lastname,
(((acos(sin((".$this->db->escape($lat)."*pi()/180)) * sin((`latitude`*pi()/180))+cos((".$this->db->escape($lat)."*pi()/180)) * cos((`latitude`*pi()/180)) * cos(((".$this->db->escape($lon)." - `longitude`)*pi()/180))))*180/pi())*60*1.1515) AS `distance`
FROM memb_geo_locations loc

然后它会变得更加广泛,因为我用潜在的LEFT JOINSJOINS等来构建其余部分。

但是这个家伙..

(((acos(sin((".$this->db->escape($lat)."*pi()/180)) * sin((`latitude`*pi()/180))+cos((".$this->db->escape($lat)."*pi()/180)) * cos((`latitude`*pi()/180)) * cos(((".$this->db->escape($lon)." - `longitude`)*pi()/180))))*180/pi())*60*1.1515) AS `distance`

我不确定如何将其与活动记录方法联系起来,我正在寻求一些帮助。有任何想法吗?

1 个答案:

答案 0 :(得分:1)

        $this->db->select('loc.distance,
        loc.user,
        loc.lat,
        loc.lon,
        baseinfo.firstname,
        baseinfo.lastname,
        (((acos(sin(('.$this->db->escape($lat).'*pi()/180)) * sin((`latitude`*pi()/180))+cos(('.$this->db->escape($lat).'*pi()/180)) * cos((`latitude`*pi()/180)) * cos((('.$this->db->escape($lon).' - `longitude`)*pi()/180))))*180/pi())*60*1.1515) AS `distance`
        ');
        $this->db->from('loc');
       //then all stuffs you need more... like
       $this->db->join();
       //etc..
      $query = $this->db->get('memb_geo_locations');
      return $query->result();