[TYPO3-german] Sortierung von Kindobjekten in extbase
Christian Essl
essl at incert.at
Thu Dec 22 12:50:34 CET 2011
Danke, das habe ich übersehen!
Ich habe jetzt folgende Sortierung gesetzt:
$this->categoryRepository->setDefaultOrderings(array('events.title' => Tx_Extbase_Persistence_QueryInterface::ORDER_ASCENDING));
direkt danach wird eine Kategorie, die in der Flexform definiert ist, mit allen ihren Events ausgelesen:
$category = $this->categoryRepository->findByUid($this->settings['flexform']['category']);
Die setDefaultOrderings-Einstellung wird zwar ohne Fehlermeldungen übernommen, aber die Sortierung der Events bleibt nach wie vor nach uid. :(
-----Ursprüngliche Nachricht-----
Von: typo3-german-bounces at lists.typo3.org [mailto:typo3-german-bounces at lists.typo3.org] Im Auftrag von Seidel, Christopher
Gesendet: Freitag, 16. Dezember 2011 11:58
An: German TYPO3 Userlist
Betreff: Re: [TYPO3-german] Sortierung von Kindobjekten in extbase
Finde ich auch noch zu umständlich.
Du kannst doch bei jeglicher Art von Kindobjekten die Punktannotation benutzen um Eigenschaften der Kindobjekte abzufragen. Dies funktioniert auch bei Sortierungen und ObjectStorages.
Bevor du das findAll() startest kannst du auch einfach das hier schreiben:
$this->blubRepository->setDefaultOrderings(array('objectstorage.eigenschaft_der_objekte_nach_denen_ich_sortieren_will' => Tx_Extbase_Persistence_QueryInterface::ORDER_ASCENDING));
Viele Grüße
Christopher
-----Ursprüngliche Nachricht-----
Von: typo3-german-bounces at lists.typo3.org [mailto:typo3-german-bounces at lists.typo3.org] Im Auftrag von Thomas Pronold
Gesendet: Freitag, 16. Dezember 2011 11:13
An: German TYPO3 Userlist
Betreff: Re: [TYPO3-german] Sortierung von Kindobjekten in extbase
Schreib dir einfach im KindObjekt-Repository eine extra find-Methode und benutze dort das $query Objekt von extbase:
Beispiel von:
http://blog.typoplanet.de/2010/01/27/the-repository-and-query-object-of-extbase/
public function findRecentByBlog(Tx_BlogExample_Domain_Model_Blog $blog, $limit = 5) { $query = $this->createQuery(); return $query->matching($query->equals('blog', $blog))
->setOrderings(array('date' =>
Tx_Extbase_Persistence_QueryInterface::ORDER_DESCENDING))
->setLimit((integer)$limit)
->execute();
}
Das sollte dir hoffentlich weiterhelfen.
Viele Grüße,
Thomas Pronold
http://www.tpronold.de
Am 16.12.2011 08:31, schrieb Christian Essl:
> Danke,
>
> aber dann müsste ich wieder meine Kindobjekte manuell über dieses Repository auslesen, wenn ich mich nicht irre?
> Ich habe hier z.B. ein einfaches Modell "Calendar" mit 1:n-Relation zu "Events". Wenn ich jetzt einen Kalender mit all seinen Events ausgeben will, greife ich einfach auf das CalendarRepository zurück. Die Events werden dann ja automatisch mit der ObjectStorage-Konfiguration im Model nachgeladen, aber dann eben nur nach der default-Sortierung.
> Wegen der Sortierung der Datensätze alleine ein EventRepository einzurichten und die Events dann manuell im Controller auszulesen kommt mir irgendwie recht umständlich vor. Gibt es da wirklich keine einfachere Lösung für ObjectStorage? Bin jetzt nämlich schon öfter mit extbase auf dieses Problem gestoßen, dass ich Objekte einfach nur nach einer anderen Sortierung ausgeben wollte.
>
> Gruß,
> Christian
>
> -----Ursprüngliche Nachricht-----
> Von: typo3-german-bounces at lists.typo3.org
> [mailto:typo3-german-bounces at lists.typo3.org] Im Auftrag von Alexander
> Dick
> Gesendet: Donnerstag, 15. Dezember 2011 20:09
> An: typo3-german at lists.typo3.org
> Betreff: Re: [TYPO3-german] Sortierung von Kindobjekten in extbase
>
> Hallo Christian,
>
> sieh dir mal die defaultOrderings an.
>
> definiere das im entsprechenden Repository des Kind Objektes:
>
> protected $defaultOrderings = array(
> 'startdate' =>
> Tx_Extbase_Persistence_QueryInterface::ORDER_DESCENDING
> );
>
> LG
> Alex
>
> Am 15.12.2011 15:12, schrieb Christian Essl:
>> Hallo,
>>
>> Ich versuche jetzt schon den halben Tag, Kindobjekte (einfache 1:n-Relation) innerhalb meines ORM über ein manuelles Feld (ein Datum) anstatt der uid zu sortieren.
>>
>> Zunächst einmal habe ich herausgefunden, dass sich die Sortierung von extbase über das TCA mit "foreign_sortby => 'startdate'" bewerkstelligen lässt. Allerdings ist das auch keine Lösung, da dieses Feld dann intern im Backend für die Sortierung verwendet wird und deshalb die startdate-Werte überschrieben werden.
>> Ist es irgendwie sinnvoll möglich, die Kind-Objekte zu sortieren?
>>
>> Wenn ich die Kind-Objekte nicht mehr direkt über den Aggregate Root auslese, sondern darauf angewiesen wäre, diese manuell mit eigenen Querys auszulesen, würde das ja irgendwie den Sinn vom ganzen Object Relational Model untergraben, wenn ich das alles wegen einer einfachen Sortierung nochmal auslesen müsste?
>>
>> Gruß,
>> Christian
> _______________________________________________
> TYPO3-german mailing list
> TYPO3-german at lists.typo3.org
> http://lists.typo3.org/cgi-bin/mailman/listinfo/typo3-german
> _______________________________________________
> TYPO3-german mailing list
> TYPO3-german at lists.typo3.org
> http://lists.typo3.org/cgi-bin/mailman/listinfo/typo3-german
_______________________________________________
TYPO3-german mailing list
TYPO3-german at lists.typo3.org
http://lists.typo3.org/cgi-bin/mailman/listinfo/typo3-german
_______________________________________________
TYPO3-german mailing list
TYPO3-german at lists.typo3.org
http://lists.typo3.org/cgi-bin/mailman/listinfo/typo3-german
More information about the TYPO3-german
mailing list