Использование необработанной базы данных для запроса, но не запускается из-за ошибки в строке sql - PullRequest
0 голосов
/ 14 января 2020

Я новичок в использовании laravel, и мне нужно запросить, используя строку sql, но код не запускается из-за ошибки в запросе sql Код:

 $current_lat = $request->latitude;

  $current_lng = $request->longitude;

  $car_type = $request->car_type;
        $data=DB::table('artisantypes')->select(DB::raw('artisantypes.max_seat AS max_size,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) )) as distance,artisans.driver_lat,artisans.driver_lng' ))
        ->leftjoin('artisans','artisantypes.id', '=','artisans.car_id' )
        ->where('artisantypes.id' ,'=', $car_type and 'artisans.status', '=' , 0)
        ->groupby('artisans.id')
        ->having('distance' ,'<', 25)
        ->orderby ('distance', 'ASC' )
        ->limit( 0,1)
        ->get();

Ошибка в полученном:

 check the manual that corresponds to your MariaDB server version for the right syntax to use near '= `artisantypes`.`id` = ? group by `artisans`.`id` having `distance` < ? 

1 Ответ

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

Вы не можете напрямую указать AND в функции where.

изменить

->where('artisantypes.id' ,'=', $car_type and 'artisans.status', '=' , 0)

на

->where([
    ['artisantypes.id' ,'=', $car_type],
    ['artisans.status', '=' , 0],
])
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...