26. 02. 2014, 15:40

hallo,

Ich habe ein Problem mit m:n Beziehungen.

Folgendes "steht" schon:
es gibt Events und Feuser (da hab ich das Frontenduser Model von extbase erweitert). Feuser können Events bewerten, das ist ein m:n Beziehung. Dafür gibt es eine Extra Entität "Eventrating", die dann 1 Feuser , 1 Event und einen Integer als Attribute hat.

Jetzt das Problem:
In der listAction für Events soll die bewertung vom eingeloggten Nutzer drinstehen (bzw. nix wenn er das Event noch nicht bewertet hat).
Allerdings ist eventrating beim Event als ObjectStorage angelegt, sprich, da werden für jedes Event ALLE Bewertungen aus der DB gelesen (das skaliert extrem schlecht mit fder Anzahl der Nutzer ;) ).
Wie kann ich es hinbekommen, dass über das EventRepository nicht alle Ratings ausgelesen werden, sondern nur das vom eingeloggten Feuser?

Ein paar Workarounds hab ich mir schon überlegt, z.B. über den Feuser die bereits bewerteten Events auslesen, und dann separat alle, die noch nicht von ihm bewertet wurden.

oder im EventRepository eine eigene SQL-Query (statement) abschicken.

oder: alle Events auslesen und mit den bewerteten Events vom Feuser mergen (das ist allerdings sehr langsam)

oder man könnte die Events alle durch eine Schleif schicken und für jedes einzelne dann das rating auslesen (aber das erscheint mir auch nicht ideal).

Eine andere Idee: für die ObjectStorage Objeke wird lazy loading benutzt. Wenn dann die Objekte nachgeladen werden, gibt es da eine Möglichkeit die DB-Abfrage zu manipulieren?

Danke für jeden Tipp!

Grüße,

Vince