Кажется, вы хотите использовать ST_Distancesphere
метод, вам нужно использовать raw sql. Поэтому, если вы используете whereRaw()
, как это, и устанавливаете привязку для , предотвращающую SQL Инъекцию :
$queryData=$getData->whereRaw("ST_Distancesphere(geom, ST_SetSRID(ST_MakePoint(:lng,:lat), 4326)) < :b", ["lng" => $longt, "lat" => $latt, "b" => $b])
->get();
Однако, у вас есть другие способы привязки перед этим запросом,
DB::table('students')->where([['code', '=', '1'],['class', '!=', 'General'],['gender','=', 'm']])
Laravel получит Invalid parameter number
ошибку.
Так что я думаю, что вам нужно изменить предыдущие привязки, заставить их всех использовать один и тот же способ привязки:
if($a != "") {
$getData = DB::table('students')
->whereRaw("code = :code AND class != :class AND gender = :gender", ["code" => 1, "class" => "General", "gender" => "m"]);
}
if($b != '') {
$queryData=$getData->whereRaw(" ST_Distancesphere(geom,ST_SetSRID(ST_MakePoint(:longt, :latt), 4326)) < :b", ["longt" => $longt, "latt" => $latt, "b" => $b])->get();
} else {
$queryData=$getData->get();
}
return $queryData;