Problem
hat
, mit
Und wo hat
kann für Anfängerentwickler manchmal verwirrend sein. Geben wir eine Perspektive auf das, was jeder von diesen bedeuten
Lösung
mit()
wird im Allgemeinen mit eifriger Belastung verwendet, was eine schnelle Möglichkeit ist, verwandte Modelle zu ziehen. Grundsätzlich bedeutet dies, dass Laravel zusammen mit dem Hauptmodell die aufgelisteten Beziehung (en) vorlädt. Dies ist von Vorteil, wenn Sie zusätzliche Daten laden und vermeiden möchten N+1
DB schlechte Praktiken. Mit eifriger Belastung führen Sie nur eine zusätzliche DB -Abfrage anstelle von möglicherweise Hunderten zusätzlicher Abfragen aus.
Beispiel:
Benutzer> Hasmany> OrganisationHat
hat()
wird verwendet, um das Auswahlmodell basierend auf der ausgewählten Beziehung zu filtern. Es ist im Grunde eine Where -Methode für Beziehungen. Wenn Sie nur verwenden hat ('organisation')
, Unter Verwendung des gleichen Beispiels für Benutzer und Organisationen würde dies bedeuten, dass alle Benutzer, die mindestens eine Organisation in ihrem "Portfolio" haben, übernimmt.
Beispiel:
Benutzer> Hasmany> OrganisationWo hat
wo hat()
ist fast dasselbe wie hat()
. Sie können nur zusätzliche Filter angeben, damit das zugehörige Modell überprüft werden soll.
Beispiel:
Benutzer> Hasmany> Organisation