Запрос с помощником формы codeigniter - PullRequest
2 голосов
/ 20 апреля 2011

Я работаю над поиском радиуса с помощью Google Maps API и MYSQL (http://spinczyk.net/blog/2009/10/04/radius-search-with-google-maps-and-mysql/)

Можно ли использовать вспомогательные функции формы 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`

Я не уверен, как добавить все это с помощью помощника по формам.

Ответы [ 3 ]

7 голосов
/ 24 апреля 2011

Если вы хотите использовать базу данных в своих помощниках, вам нужен доступ к суперобъекту 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...
}
3 голосов
/ 20 апреля 2011

Нет способа создать этот запрос с классом базы данных как есть.

Вы можете использовать:$this->db->query()http://codeigniter.com/user_guide/database/queries.html

Или вы можете расширить класс базы данных самостоятельно, включив в него математические функции.

0 голосов
/ 19 октября 2016

По причинам повторного использования я предпочитаю создать помощника для этого:

https://gist.github.com/lefakir/e84c22996b1e77436f955c5a7df4d671

А затем используйте его в других помощниках:

$ci = get_database_connected_ci();
$query = $ci->db->query($sql);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...