Мой оператор sql возвращает ноль после использования DB Raw. Данные не создаются после передачи запроса почтальону.
$current_lat = $request->latitude;
$current_lng = $request->longitude;
$car_type = $request->car_type;
$raw = DB::Raw("(3956 * 2 * ASIN(SQRT(POWER(SIN(('.$current_lat.' - artisans.driver_lat)
* pi()/180 / 2), 2)+ COS('.$current_lat.' * pi()/180 )
* COS(artisans.driver_lat * pi()/180)
* POWER(SIN(('.$current_lng.' - artisans.driver_lng)
* pi()/180 / 2), 2) )))");
return json_encode($raw);
Результаты: {}
Когда я пытаюсь сделать запрос непосредственно в базе данных, он возвращает вывод в виде:
4
0.03677850072504271
6.6701784633102145
-1.562010571360574
Всего 2 ответа
Я думаю, это должно выглядеть так
DB::table('artisans')
->select(DB::Raw("your raw"))
->get();
Попробуйте DB::select
так:
$results = DB::select('select (3956 * 2 * ASIN(SQRT(POWER(SIN((? - artisans.driver_lat)
* pi()/180 / 2), 2)+ COS(? * pi()/180 )
* COS(artisans.driver_lat * pi()/180)
* POWER(SIN((? - artisans.driver_lng)
* pi()/180 / 2), 2) ))) from artisans', [$current_lat, $current_lat, $current_lng]);
Это также обеспечивает защиту от внедрения SQL. Проверьте документы Laravel для получения дополнительной информации.