проблема с laravel красноречивым на отрицательной десятичной дроби - PullRequest
0 голосов
/ 05 апреля 2020

Я новичок в laravel.

Я использую этот контроллер, чтобы найти все местоположения в виде карты с sw и ne, которые хорошо работали, когда sw и ne - положительный десятичный знак, но когда sw и ne - Отрицательный queryBuilder ничего не возвращает. Когда запрос выполняется в mysql, возвращается правильный результат.

Может кто-нибудь помочь мне выяснить, что я делаю неправильно. Это мой код:

$lat_a = (float)\request('sw_lat');
$lat_b = (float)\request('ne_lat');
$lng_a = (float)\request('sw_lng');
$lng_b = (float)\request('ne_lng');
$data = Location::where(function ($q) use ($lat_a, $lat_b) {
    $q->WhereRaw('(?<? AND location_lat>=? AND location_lat<=?)', [$lat_a, $lat_b, $lat_a, $lat_b])
        ->orWhereRaw('(?<? AND location_lat>=? AND location_lat<=?)', [$lat_b, $lat_a, $lat_b, $lat_a]);
})->where(function ($q) use ($lng_a, $lng_b) {
    $q->WhereRaw('(?<? AND location_lng>=? AND location_lng<=?)', [$lng_a, $lng_b, $lng_a, $lng_b])
        ->orWhereRaw('(?<? AND location_lng>=? AND location_lng<=?)', [$lng_b, $lng_a, $lng_b, $lng_a]);
})->get();

и структура моей таблицы:

$table->decimal(\App\Location::COLUMN_LOCATION_LAT,10,8);
$table->decimal(\App\Location::COLUMN_LOCATION_LNG,11,8);

и журнал запросов

rray:1 [
0 => array:3 [
 "query" => "select * from `locations` where ((?<? AND location_lat>=? AND location_lat<=?) or (?<? AND location_lat>=? AND location_lat<=?)) and ((?<? AND location_lng>=? AND location_lng<=?) or (?<? AND location_lng>=? AND location_lng<=?)) and `locations`.`deleted_at` is null"
 "bindings" => array:16 [
   0 => 41.84487754
   1 => 41.91938078
   2 => 41.84487754
   3 => 41.91938078
   4 => 41.91938078
   5 => 41.84487754
   6 => 41.91938078
   7 => 41.84487754
   8 => -87.67727337
   9 => -87.59382214
   10 => -87.67727337
   11 => -87.59382214
   12 => -87.59382214
   13 => -87.67727337
   14 => -87.59382214
   15 => -87.67727337
 ]
 "time" => 844.8
]
]
...