【问题标题】:Codeigniter Active Record Select statement with not so normal statements带有不太正常语句的 Codeigniter Active Record Select 语句
【发布时间】:2013-03-17 12:43:33
【问题描述】:

是的,我承认这篇文章的主题并不完美。但是我目前不知道如何措辞。

我想要做的是避免$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`

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

【问题讨论】:

  • 我最近给出了一个答案,你可以检查一下。 stackoverflow.com/questions/15400938/…
  • 我有点理解这个概念,但同时不是那么多,因为它与我认为我总体上寻找的有点不同。如果可以的话(而且我必须到这个日期),请远离系统文件夹并编辑其中的任何文件,因为我不想在升级 CI 时引起潜在的冲突(如果他们曾经推出值得升级的重要版本)

标签: php mysql codeigniter activerecord


【解决方案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();

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2013-04-11
    • 2014-12-24
    • 2016-02-25
    • 1970-01-01
    • 2013-09-26
    • 2011-01-05
    • 1970-01-01
    相关资源
    最近更新 更多