Dies wird eine einfache Frage für einige sein, aber ich kann nicht scheinen, die Antwort online oder in der Dokumentation zu finden (nur Varianten davon, die ich nicht will).Laravel/Eloquent eifrig laden
- Können sagen, wir haben eine
Question
Klasse - Jedes
Question
Objekt optional mehrereTag
s haben können
ich die Klassen eingerichtet haben und die Dinge verhalten sich wie erwartet. Derzeit verwende ich:
$questions = Question::all();
Dies funktioniert wie erwartet, aber es nicht eifrig Last.
Um klar zu sein: $question->tags
gibt das Array ich erwarte. Es gibt kein Beziehungsproblem.
Aufgrund neuer Anforderungen werde ich eine Ansicht mit möglicherweise Tausenden von Fragen erstellen, so dass dieses eifrige Laden ein Muss ist.
ich versucht zu nutzen:
$questions = Question::with('tag')->all();
Welche Nachricht gibt Fehler:
BadMethodCallException in Builder.php Linie 2345: undefinierte Methode Illuminate \ Database \ Query-Aufruf \ Builder :: all()
Jedes Tutorial, oder wie ich Google Eager laden, gibt entweder eine ID an, ODER ist ein Tutorial, wie man NUR Eltern mit Kindern zeigt.
Ich möchte einfach "alle und ihre Kinder".
Das muss einfach sein ... weiß jemand, wie es geht?
Dank Rick
Diese bereits definiert sind. Dies ist nicht der Schritt, mit dem ich ein Problem habe. Um klar zu sein .. kann ich schon von den Objekten abfragen. $ question-> tags gibt mir ein Array .. es ist nur, dass es LAZY geladen ist. Ich möchte eine EAGER-Last erzwingen. – elb98rm
'$ fragen = Frage :: mit ('tag') -> get();' gibt: 'BadMethodCallException in Builder.php Zeile 2345: Aufruf zu undefinierte Methode Illuminate \ Database \ Query \ Builder :: tag()' – elb98rm
'$ questions = Question :: with ('tags') -> get();' (es sollten Tags nicht tag = zum Funktionsnamen im Question-Modell sein) –