Hallo zusammen,
ich habe eine ziemlich umfangreiche Datenbank mit einigen Relationen. So hat auch die Liste die ich ausgeben will mehrere Kindobjekte und diese wiederum weitere Kindobjekte usw.
Erst mal ist es wunderbar wie findAll() alle Relationen auf bröselt, aber sind für mich nur 2 Ebenen relevant. Zwar ist dies nicht weiter schlimm, ich denke mir aber bei größerer Anzahl kann dies schon ganz schön die DB belasten.
Beispiel Auto -> Motor -> Schrauben
Nun brauche ich nur Auto und Motor. Die Schrauben soll er gar nicht erst abfragen.
Gibt es eine Möglichkeit bei findAll() nur bestimmte Anzahl von Ebenen durch zu forschen?
Oder muss ich die Abfrage selber basteln?
findAll() holt dir erstmal nur alle Objekte von dem Typ den dein REpository repräsentiert. Ob Relationen auch direkt geladen werden kommt darauf an ob Du die relation mit @lazy im Model annotiert hast oder nicht. Bei lazy werden sie erts dann geladen wenn benötigt. Das macht aber nur Sinn (weil es dann insgesamt mehr Queries bedeutet) wenn die Relation nicht sowieos immer gebraucht wird.
Hallo kitsunet,
Dankeschön.
Nur leider wirkt @lazy überhaupt nicht.
Beispielsweise
/**
* Motor
* @lazy
* @var Tx_Extbase_Persistence_ObjectStorage<Tx_MAutos_Domain_Model_Motor>
*/
protected $motor;
Leider wird jedoch wieder komplett aufgebrochen: Auto -> Motor -> Schrauben
Typo3 Cache ist deaktiviert sowie extbase cache in der localconf.
Weißt du woran das liegen könnte?
Und du bist sicher, dass der motor nirgends benutzt wird? Er wird geladen ohne Zugriff? Das sollte lazy eigentlich verhindern.
Ich habe das nun mal anders herum versucht.
Es soll auch Möglich sein dass jede Schraube weiß in welchem Motor es verbaut wurde.
Nun habe ich in das Model der Schraube bei der Motor Relation ebenfalls @lazy geschrieben.
Aber genau das gleiche. Im Debug ist ersichtlich dass auch diese Relation sofort ausgeführt wird....
Darf man einfach dem Viewer Debug nicht vertrauen?
...wer die Augen auf macht hat gewonnen..
Der Debugger zeigt auch Lazy Relationen an:
Tx_Extbase_Persistence_LazyObjectStorage
Problem gelöst wo keines war.
Danke trotzdem #giggle#