2017-04-24 4 views
0

Ich würde gerne wissen, ob es möglich ist, eine Verknüpfung in Laravel/SQL zu erstellen, die nur die Werte ersetzt, wenn sie nicht null sind.Laravel JOIN Ersetzen wenn nicht NULL

Ich versuche, eine Tabelle "Änderungen" zu erstellen. Wenn Änderungen an einem Benutzer vorgenommen werden, werden diese in der Änderungstabelle gespeichert. Wenn eine Person dann alle Benutzer auswählen möchte, kann sie die Benutzer sehen und wenn sie in der Änderungstabelle vorhanden sind, sieht sie die Änderungen im Ergebnis.

Beispiel: Ich habe eine Benutzer-Tabelle mit dem Feld: Name und Alter. Eine Person ändert das Alter und eine neue Zeile kommt in der Tabelle Änderungen mit dem Namensfeld auf NULL und dem Alter auf das neue Alter.

Dann wähle ich die Benutzer-Tabelle und sehen den alten Namen (weil es in der Änderungen Tabelle NULL ist) und das neue Zeitalter (auch, weil seine in der Änderungen Tabelle)

es versucht, mit einem Join aber das doesn‘ t der Trick:

$data = DB::table('changes') 
     ->join('users', 'changes.user_id', '=', 'users.id') 
     ->select('*') 
     ->get(); 
+0

Was haben Sie bisher versucht? Fügen Sie Ihren Code in die Frage ein, wenn Sie etwas versucht haben. – Tom

+0

Die Antwort ist ja, das ist möglich. Wenn Sie ein Beispiel für die von Ihnen gesuchten Daten und Abfrageergebnisse einfügen könnten, wäre dies hilfreich. – Tom

+0

Wenn Sie Benutzer mit Null-Änderungen haben, warum tun Sie nicht DB :: Tabelle ('Benutzer') -> ('ändert')? –

Antwort

0

ich denke, eine innere Verknüpfung sollte es tun, hier ist eine Idee:

Sie abfragen, um Ihre Änderungen Tabelle, Gruppe von user_id, wählen Sie das mit den meisten neueren Datums, und dann innere Verbindung mit Ihrem Benutzertisch ... aber ich denke nicht, dass Sie das tun wi th Eloquent, RAW sql vielleicht die Sache, die Sie wollen ...

+0

"group by the user_id" aber der Name der Spalte: "user_id" ist nicht dasselbe wie von den Benutzern: "id" – Gm33