Вот пример моего кода и объяснение того, что я пытаюсь сделать.
В начале кода я выбираю три переменные в моей базе данных.Затем я сравниваю их с функцией, которая определяет расстояние. Если расстояние находится в пределах заданного расстояния, то у меня есть идентификатор этой записи.Это приведет к нескольким идентификаторам.Может быть пять или ни одного, зависит от заданных переменных.
Что мне нужно знать, так это то, как только я определил, что идентификатор, который мне нужно использовать, мне нужно поместить либо в переменную, либо во что-то еще, что является управляемым.В основном мне нужно взять список и снова запросить базу данных, чтобы получить список деталей из базы данных.Список вернет объекты, которые позже будут обработаны до json_encode
.
Мне нужно знать, как лучше всего поместить каждый идентификатор в переменную, передать его в запрос к базе данных и получить нужные мне результаты.
Я пытался использовать $dbStations->where('_id', '34,33,45')
но возвращает только первое значение.Мне нужно что-то вроде WHERE _id = 34 AND 33 AND 45
, если это возможно.
Я использую Codeigniter для своей платформы, и я просмотрел документацию, и я не нашел решения.
РЕДАКТИРОВАТЬ: Теперь, когда у меня естьданные, выбранные из базы данных, мне нужно, чтобы получить расстояние, которое будет отображаться в конце каждой извлеченной записи.
Example of json: {"details":[{"country":"United States","_id":"3892","lat":"39.954559","lng":"-82.837608","admin_level_1":"Ohio","locale":"Columbus"}]}
Это то, что нужно, имейте в виду, что расстояние не вбаза данных, она рассчитывается на лету.
Example of json: {"details":[{"country":"United States","_id":"3892","lat":"39.954559","lng":"-82.837608","admin_level_1":"Ohio","locale":"Columbus", "distance": "1.2 Mi"}]}
Есть ли какие-либо идеи о том, как рассчитать расстояние, которое будет добавлено в конец каждого результата?
$dbStations->select('lat');
$dbStations->select('lng');
$dbStations->select('_id');
$stations = $dbStations->get('stDetails');
foreach ($stations->result() as $station) {
$lat2 = $station->lat;
$lng2 = $station->lng;
$stId = $station->_id;
$distance = $this->distance->gpsdistance($lat1, $lng1, $lat2, $lng2, "M");
if ($distance <= $rad) {
//at this point the code has determined that this id is within
//the preferred distance.
$stationArr[] = $stId;
}
}
$dbStations->select('country, _id, lat, lng, admin_level_1, locale');
$dbStations->where_in('_id', $stationArr);
$stations = $dbStations->get('stationDetails');
echo json_encode(array('stations' => $stations->result()));
}