2013-03-17 82 views
2

是的,我承認這個帖子的主題並不完美。然而,我不知道如何現在說話。Codeigniter活動記錄選擇語句並非如此正常的語句

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

我不知道如何將其綁定到活動的記錄方法,我尋求一些幫助。有任何想法嗎?

+0

我最近給出了一個關於你可以檢查的答案。 http://stackoverflow.com/questions/15400938/codeigniter-mysql-left-join-include-select/15402766#15402766 – 2013-03-17 12:59:15

+0

我有點理解的是,概念,但在同一時間沒有那麼多,因爲它與我想要的整體有點不同。如果我可以(並且我必須在這個日期),請不要在系統文件夾中編輯任何文件,因爲當升級CI的時候,我不想引起潛在的衝突(如果他們曾經推一個值得升級的值得注意的版本) – chris 2013-03-17 13:05:39

回答

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