Hallo,
ich greife in einem Model-Controller auf das Repository eines anderen Models zu. Das klappt eigentlich auch problemlos, allerdings nicht im Fall der Methode "findByProperty" in der Ausformung "findByPid". Ich übergebe als Parameter die entsprechende pid, bekomme aber keine verwertbare Rückgabe, auch keine Fehlermeldung. Teste ich an der Stelle das (ansonsten in der Situation sinnfreie) "findByUid", klappt die Abfrage. Darum meine Frage, ob für "findByProperty" Sonderregeln gelten?
Und: Wo finde ich eine aktuelle Doku zu Extbase 6.0? Die im Web von mir gefundenen Dokus scheinen ebenso wie das O'Reilly-Buch im Bereich Repositories nicht mehr ganz auf der Höhe zu sein.
Grüße, Rolf
Das Problem ist dass Dein Repository an das Ende des SQL nochmals eine Abfrage mit der pid einbaut, und zwar mit dem Wert aus der Konstanten storagePid oder in der From von IN (-1). Für diesen Fall solltest Du die Methode in der Repository anlegen und wie folgt gestalten:
/**
* findByPid
*
* @param integer $pid
* @return Tx_Extbase_Persistence_QueryResult
*/
public function findByPid($pid){
$query = $this->createQuery();
$query->getQuerySettings()->setRespectStoragePage(FALSE);
$query->matching( $query->equals("pid", $pid) );
return $query->execute();
}
Danke, PlackPixel, das war schon mal die halbe Miete! 🙂
Die andere Hälfte war, dass findByProperty das Ergebnis nicht als schnödes Objekt wie findByUid zurückgibt, sondern als Iterator, mit dem ein Gelegenheitsprogrammierer wie ich eher selten zu tun hat... Deshalb hat mein testweiser Zugriff auf die Rückgabe nicht funktioniert.
Grüße, Rolf
Hi Rolf, Du kannst da noch ein ->getFirst() ranhängen. Dann gibts nur noch das Objekt zurück :-)