Выполнение необработанного запроса с привязками параметров не дает результата - PullRequest
1 голос
/ 15 января 2020

My 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 ]

0 голосов
/ 15 января 2020

Я думаю, это должно выглядеть так

DB::table('artisans')
    ->select(DB::Raw("your raw"))
    ->get();
0 голосов
/ 15 января 2020

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...