Wo NICHT in Pivot-Tabelle
In Laravel wir können setup-Beziehungen wie folgt:
class User {
public function items()
{
return $this->belongsToMany('Item');
}
}
Erlauben Sie uns, um alle Elemente in einer pivot-Tabelle für einen Benutzer:
Auth::user()->items();
Aber was ist, wenn ich möchte das genaue Gegenteil. Und erhalten Sie alle Elemente, die der Benutzer noch NICHT. Also NICHT in der pivot-Tabelle.
Gibt es eine einfache Möglichkeit, dies zu tun?
InformationsquelleAutor der Frage Rob | 2013-11-20
Du musst angemeldet sein, um einen Kommentar abzugeben.
Einfachheit und Symmetrie könnte man erstellen Sie eine neue Methode in der User-Modell:
Verwenden, rufen Sie:
InformationsquelleAutor der Antwort Makita
Blick auf den source-code der Klasse
Illuminate\Database\Eloquent\Builder
haben wir zwei Methoden in Laraveldas dies tut:whereDoesntHave
(Gegenteil vonwhereHas
) unddoesntHave
(Gegenteil vonhas
)dies funktioniert einwandfrei für mich!
Für einfache ", Wo Sie noch nicht vorhanden ist-Beziehung", verwenden Sie diese:
Sorry, verstehe nicht Englisch. Ich benutzt den google übersetzer.
InformationsquelleAutor der Antwort Wallace Maxters
Es ist nicht so einfach, aber in der Regel der effizienteste Weg ist, um eine Unterabfrage verwenden.
Wenn das etwas war, was ich Tat oft ich möchte hinzufügen, es wie ein Rahmen-Methode, um das Element-Modell.
Verwenden Sie dann später wie dieser.
InformationsquelleAutor der Antwort Collin James
Wie etwa left join?
Vorausgesetzt, die Tabellen sind
users
items
unditem_user
finden Sie alleitems
nicht im Zusammenhang mit der Benutzer123
:InformationsquelleAutor der Antwort user194715
sollte diese Arbeit für Sie
InformationsquelleAutor der Antwort Gadoma
Endete schreiben einen Spielraum für das wie so:
Und dann rufen:
Funktioniert jetzt, aber ein bisschen chaotisch. Würde gerne etwas mit einem Stichwort wie
not
:Grundsätzlich Eloquent ausgeführt wird, die Abfrage sowieso, außer mit einem
=
statt einer<>
.InformationsquelleAutor der Antwort Rob
Vielleicht können Sie verwenden:
Quelle: http://laravel.com/docs/4.2/queries#advanced-wheres
InformationsquelleAutor der Antwort Turcko007