Zum Inhalt springen

findByPid funktioniert nicht

Erstellt am 15. Februar 2013 · 3 Antworten · letzte Antwort am 15. Februar 2013

Tags: Frage

robart ·

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

BlackPixel ·

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();
	}
robart ·

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