Я пытался показать расстояние для результатов моего поискаДобавление расстояния к результатам запроса
код и запрос
$query = DB::select(DB::raw('SELECT id, (3959 * acos(cos(radians(' . $lat . ')) * cos(radians(latitude)) * cos(radians(longitude) - radians(' . $lng . ')) + sin(radians(' . $lat .')) * sin(radians(latitude)))) AS distance FROM listings HAVING distance < ' . $distance . ' ORDER BY distance'));
foreach($query as $q)
{
array_push($ids, $q->id);
}
$placeholders = implode(',',array_fill(0, count($ids), '?'));
$listings = Listing::whereIn('id', $ids)->orderByRaw("field(id,{$placeholders})", $ids)->paginate(10);
$ запрос содержит расстояние.
Как добавить расстояние до результатов поиска?
$ перечислений = Листинг :: выберите ([ \t \t \t "*", \t \t \t «(3959 * ACOS (соз (radians ('. $ lat.')) * cos (радиан (широта)) * cos (радианы (долгота) - радианы ('. $ lng.')) + sin (радиан ('. $ lat.')) * sin (радиан (широта)))) AS расстояние " \t \t \t]) -> имея ('расстояние', '<', $ distance) -> orderBy ('distan се ') -> получить(); Я получаю ошибки –
SQLSTATE [42000]: Синтаксическая ошибка или нарушение прав доступа: 1064 У вас есть ошибка в синтаксисе SQL; проверьте руководство, соответствующее версии сервера MariaDB, для правильного синтаксиса, используемого рядом с '* from 'listings' с' distance' order by 'distance' asc 'в строке 1 (SQL: select *,' ('as * from' listings' с 'distance' <5 order by' distance' asc) –
Укажите имя таблицы со списком звездочек. * " –