我正在使用Google Maps API和MYSQL进行半径搜索(http://spinczyk.net/blog/2009/10/04/radius-search-with-google-maps-and-mysql/)< / p>
是否可以使用CI表单助手函数进行以下查询?
SELECT
`id`,
`name`,
ACOS( SIN( RADIANS( `latitude` ) ) * SIN( RADIANS( $fLat ) ) + COS( RADIANS( `latitude` ) )
* COS( RADIANS( $fLat )) * COS( RADIANS( `longitude` ) - RADIANS( $fLon )) ) * 6380 AS `distance`
FROM `stations`
WHERE
ACOS( SIN( RADIANS( `latitude` ) ) * SIN( RADIANS( $fLat ) ) + COS( RADIANS( `latitude` ) )
* COS( RADIANS( $fLat )) * COS( RADIANS( `longitude` ) - RADIANS( $fLon )) ) * 6380 < 10
ORDER BY `distance`
我不确定如何使用表单助手添加所有内容。
答案 0 :(得分:7)
如果要在助手中使用数据库,则需要访问CI超级对象。 在你的功能中:
$ci =& get_instance(); $ci->load->database(); $sql = "YOUR SQL QUERY GOES HERE"; $q = $ci->db->query($sql); if($q->num_rows() > 0) { //Process your query here... }
答案 1 :(得分:3)
无法按原样使用数据库类创建该查询。
您可以使用:
$this->db->query()
http://codeigniter.com/user_guide/database/queries.html
或者您可以自己扩展数据库类以包含数学函数。
答案 2 :(得分:0)
出于可重复使用的原因,我更喜欢为此创建帮助:
https://gist.github.com/lefakir/e84c22996b1e77436f955c5a7df4d671
然后在其他助手中使用它:
$ci = get_database_connected_ci();
$query = $ci->db->query($sql);