Выполнение необработанного запроса с привязками параметров не дает результата

Мой оператор 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 для получения дополнительной информации.


Есть идеи?

10000