2017-01-18 18 views
-1

Я использую этот инструмент для расчета расстояния между 2 точками:Laravel расчет гаверсинуса

$location = new CnpPoi(28.535153, -81.383219); 
$destination = new CnpPoi(42.594018, -88.433886) 
$location->getDistanceInMilesTo($destination); 
$location->getDistanceInMetersTo($destination); 

необходимости использовать его в запросе, чтобы магазин заказал на расстоянии от заданной точки, которые уже пропускали через URL-адрес его $ Lat e $ long. Как я могу использовать эту функцию внутри запроса?

ответ

0
public function getStoresNear($latitude, $lngitude){ 

    $stores = Store::select('stores.*') 
     ->selectRaw('(6371 * acos(cos(radians(?)) * 
          cos(radians(store_lat)) 
          * cos(radians(store_long) - radians(?) 
          ) + sin(radians(?)) * 
          sin(radians(store_lat))) 
         ) AS distance', [$latitude, $longitude, $latitude]) 
     ->orderBy('distance', 'desc') 
     ->get(); 

    return $stores; 
} 
+0

Ошибка синтаксиса 1064 У вас есть ошибка в синтаксисе SQL; проверьте руководство, соответствующее вашему серверу MariaDB, рядом с «длинным») - радианы (?) ) + sin (радиан (?)) * 'в строке 3 (SQL: выберите 'tb_users'. *, (6371 * acos (Cos (радианы (41.9242814)) * Cos (радианы (латы)) * Cos (радианы (длинный) - радиан (12.4923974) ) + sin (радианы (41,9242814)) * греха (радианы (латы))) ) AS расстояние от 'tb_users' порядка' distance' desc) (Вид: /home/gethelpme/public_html/local/resources/views/user/risultati.blade.php) (Вид:/home/gethelpme/public_html/local/resources/views/user/risultati.blade.php) – rubenSousa

+0

О, извините, этот ответ был предназначен для mysql not MariaDB. Пожалуйста, разместите тег mariaDb в своем вопросе – Paras