Zum Inhalt springen

Extbase Repository Datensatz zweimal ausgeben

Erstellt am 11. März 2011 · 3 Antworten · letzte Antwort am 11. März 2011

Tags: Frage

ausgebloggt.​de ·

Hallo zusammen,

kennt jemand das Problem, dass man einen einmal über ein Repository abgerufenen Datensatz kein zweites Mal auf der gleichen Seite ausgeben kann?

Mir erscheint das Ganze mittlerweile so seltsam, dass ich schon befürchte das der Fehler ganz wo anders liegt und mir daher auch nicht geholfen werden kann. Ich habe gesucht wie verrückt. Mit dem QueryResult rewind rum probiert... aber ich komme nicht dahinter.

Über eure Hilfe würde ich und das Wochenende sich riesig freuen!

Beste Grüße,
Andy

Unbekannter Benutzer ·

Auf Anhieb kann ich dir leider nicht helfen.

Kannst du vielleicht ein wenig mehr zum Ablauf deines Codes sagen?

"Datensatz" klingt für mich schon komisch. Normalerweise rufst du ja über das Repository die "Datensätze" ab. Diese werden dann mittels Extbase als Instanz des Models zurückgegeben. Das existiert während der gesamten Action und somit sollte man eigentlich die ganze Zeit darauf zugreifen können.

ausgebloggt.​de ·

Hi,

danke schon mal für die Rückmeldung. Sorry wenn ich mit meinem "Datensatz" etwas für Verwirrung gesorgt habe. Gemeint waren damit die zurückgegebenen Model Instanzen.

Also, ich rufe auf der Seite über ein Widget einmal eine Methode des Repository auf und lasse mir den ersten Treffer zurück geben. Vereinfacht:

...
$dates =  $this->findAll();

return $dates->getFirst();
...

Das Ergebnis stimmt. Später frage ich das Repository dann noch einmal in einer anderen Controller-Action ab. Dort benötige ich dann allerdings alle Daten, inklusive der bereits weiter oben abgefragten. Also in etwa:

...
return $this->findAll();
...

In diesem Ergebnis kann ich dann nur leider nicht mehr auf die bereits ausgegebenen Daten zugreifen... für sich alleine stehend funktionieren beide Funktionen problemlos.

Mir ist klar, dass es sich bei dem Repository um ein Singleton handelt. Nur merkt es sich hier für meine Bedürfnisse einen Ticken zu viel und mir fehlt der "Schalter" zum zurücksetzen des Gedächtnisses 😉

Hoffe damit ein wenig besser erklärt zu haben, wo das Problem liegt. Eigentlich grundlegend. In den Methoden findet auch noch mehr statt, dass Problem bleibt aber auch ohne eigenen Code bestehen...

Vielen Dank für die Mühe!

Beste Grüße,
Andy

ausgebloggt.​de ·

Ahhh,

ich habe es! Sorry, was ich bisher nicht erwähnt habe war, dass ich über das zurückgegebene Model auf eine MM-Tabelle zugreife. Dort stand dann etwas wie

public function getEvent() {
 return $this->events->current();
}

Erst an der Stelle fehlte aber das rewind. Den Code wie folgt geändert und es funktioniert:

public function getEvent() {
 $this->events->rewind();
 
 return $this->events->current();
}

Das war mit meiner Problembeschreibung natürlich nicht zu lösen. Tut mir leid. Ich hatte ja bereits befürchtet an der falschen Stelle zu suchen...

Vielen Dank auf jeden Fall für das prompte Feedback... ansonsten hätte ich mir nach stundenlanger Suche auch schon gar keine Gedanken mehr gemacht.

Beste Grüße,
Andy