Ich habe eine JSON Spalte in meiner Datenbank, die Längen- und Breitengrad speichert Koordinaten aufgebaut wie:Laravel - Beim Abrufen der Entfernung, wenn Länge und Breite eines Benutzers angegeben werden, erhalte ich bei allen Modellen das gleiche Ergebnis. Warum?
_geoloc:{lat: 33.6556324, lng: -117.7015161}.
Ich versuche, die Datenbank mit einer Breite Länge & des Benutzers abfragen Koordinaten alle Datensätze abzurufen, die innerhalb eines bestimmten fallen Entfernung. Unten ist die Funktion, die ich verwende, aber alle Ergebnisse geben die gleiche Entfernung von 7797.5012454514 mit jedem Modell zurück. Ich möchte den Parameter $distance
als Meilen übergeben.
protected function get_locations($latitude, $longitude, $distance = 8000) {
$results= my_table::select('my_table.*')
->selectRaw('(3959 * (acos(cos(radians(?))
* cos(radians("_geoloc->lat"))
* cos(radians("_geoloc->lng") - radians(?))
+ sin(radians(?))
* sin(radians("_geoloc->lat")))))
AS distance', [ $latitude, $longitude, $latitude ])
->havingRaw("distance< ?", [ $distance ])
->groupBy('first_name')
->get();
return $results;
}