Znowu mam problem z Laravelem i jak go tu mam lubić :P Ale do rzeczy.
Mam tabelę z obiektami, które mają swoje koordynaty lat/long. Chciałbym wybrać kilka z nich, ograniczonych do obszaru określonego przez skrajne punkty czworokąta. Wyprodukowałem więc zapytanie, które wygląda tak:
$objects = ModelObject::where('latitude', '>=', $minLat)->where('longitude', '>=', $minLon)->where('latitude', '<=', $maxLat)->where('longitude', '<=', $maxLon)->get();
i wraca pusta tabelka...
Gdy zrzucę te zapytanie z query loga to mam:
select * from `tablewithobjects` where `latitude` >= ? and `longitude` >= ? and `latitude` <= ? and `longitude` <= ?
oraz bindingi:
Array
(
[0] => 51.501199
[1] => -0.1579233
[2] => 51.525043
[3] => -0.1250157
)
Jeżeli wpiszę te zapytanie bezpośrednio do bazy podmieniając tokeny to wracają odpowiednie dane.
Przykładowe koordynaty jednego z obiektów, który powinien być w wynikach tego zapytania to: 51.503186
-0.150547
.
Zauważyłem też, że jeżeli zamienię parametry zapytania 1 z 3 to wtedy Laravel zwraca poprawne dane, natomiast zapytanie odpalone bezpośrednio w bazie daje pusty wynik.
Nie rozumiem co tu jest grane :U
Przecież -0.150547
jest większe od -0.1579233
oraz mniejsze od -0.1250157
, siedzę nad tym już tyle czasu, że aż musiałem się o to spytać Wolfram Alpha https://www.wolframalpha.com/input/?i=-0.150547+%3E%3D+-0.1579233+%26+-0.150547+%3C%3D+-0.1250157 który się ze mną zgadza. Dlaczego jednak w Laravelu jest z tym problem?