Ich benutze Larawel Abfrage-Builder, um Standorte aus meiner Datenbank zu holen. Ich muss 2 Tabellen beitreten und dann die Ergebnisse nach Standort abfragen. Es hat alles gut funktioniert, bis ich den Beitritt hinzugefügt habe.Laravel Query Builder Join funktioniert nicht mit selectRaw
Wenn ich nur
$locations = DB::table('locations')
->join('charities', 'locations.charity', '=', 'charities.charity')
->when($charity, function ($query) use ($charity) {
return $query->where('charity', '=', $charity);
})
->get();
Dann ist es den Inhalt der beiden Tabellen zurück, die ich brauche. Wenn ich es tue
Dann bekomme ich den Inhalt der Standorte Tabelle und der Filter funktioniert gut.
Ich habe die beiden zusammen und es gibt nur den Inhalt der Standorte ohne Fehler und die Wohltätigkeits-Tabelle wurde nicht beigetreten.
$locations = DB::table('locations')
->join('charities', 'locations.charity', '=', 'charities.charity')
->select('locations.*')
->selectRaw('(3959 * acos(cos(radians(?)) *
cos(radians(latitude))
* cos(radians(longitude) - radians(?)
) + sin(radians(?)) *
sin(radians(latitude)))
) AS distance', [$lat, $lng, $lat])
->havingRaw("distance < ?", [$max_distance])
->when($charity, function ($query) use ($charity) {
return $query->where('charity', '=', $charity);
})
->get();
Versuchen Sie, für jede Spalte den Namen der Tabelle anzugeben, von der sie kommt. – MosCH
Das einzige, was aus dem Charity-Tisch kommt, ist der Wohltätigkeitsname, der bereits in den Orten ist, an denen man sich beteiligen kann, und ein Charity-Logo. Alles andere kommt von den Standorten Tabelle – craigb88
Sorry habe Sie nicht richtig lesen gelesen, ich habe die Tabellen für jede Spalte angegeben und es funktioniert ein Charme! Vielen Dank – craigb88