[TYPO3-german] Extbase -> verschachtelte m:m-Abfrage im Repository fomulieren?

Robert Wildling rowild at gmx.net
Thu Aug 1 10:42:31 CEST 2013


Hi, Extbase-Spezis,

Kann mir jemand bitte einen Tipp bei folgendem Problem geben?
Wieder mal eine Event-Extension...

Ein Event kann mehere Konzerte haben, und jedes dieser Konzerte kann 
Werke am Programm haben, die Uraufführungen sind - diese gilt es, von 
"Event" aus zu finden und als kleine Liste darzustellen - und zwar auf 
allen möglichen Konzerten.

Event, Konzerte und Werke sind alles eigene vollständige Objekte, die 
über m:m Relationen miteinander verknüpft werden.

in Event gibt es dazu ein Listenfeld "concerts", das per Klick gefüllt 
wird, und in Konzerte wiederum gibt es ein Feld "Premieres", das per 
klick Werke einfügt.

Die erste m:m-Relation wird ja von Extbase selbst ganz fein gehandelt, 
aber wie geht man die nächste Ebene an m:m-Relation an?

Derzeit versuche ich mich an diesem da, komm aber nicht weiter, weil ich 
nicht weiß, wie ich die "Premieres" ins Spiel bringen soll:


/**
      * Find all concerts and within them all premieres. Group them in a 
list (alphabetically?)
      *
      * @param 
\TYPO3\CMS\Extbase\Persistence\ObjectStorage<\Rowild\Kofomi\Domain\Model\EventGroups> 
$eventGroup
      * // ist das der richtige return Type???
      * @return 
\TYPO3\CMS\Extbase\Persistence\ObjectStorage<\Rowild\Kofomi\Domain\Model\Concerts> 
$premieres
      */
     public function findConcertPremieres($eventGroup) {
         $query = $this->createQuery();
         // Muss da irgendwo ein "groupBy" sein...???
         $query->matching(
             $query->logicalAnd(
                 $query->contains('eventGroup', $eventGroup),
                 $query->matching(
                     $query->greaterThan('premieres', 0); // <= geht 
das??? weil m:m?
                 )
             );
         );
         // wie nach dem Titel der Werke, die UAs sind, ordnen?
         $query->setOrderings(
             array (
                 'premieres.title' => 
\TYPO3\CMS\Extbase\Persistence\QueryInterface::ORDER_ASCENDING,
             )
         );
         return $query->execute();
     }

(Es gibt übrigens mehrere Event-Typen, deswegen die eventGroup...)

Das nächste Problem ist: ich kann den Code nicht auf seine 
Funktionalität prüfen, weil ich nicht weiß, wie ich diese Spezielle 
Abfrage aus Fluid aufrufe...

Ich bitte um Hilfe - danke!
Schöne Grüße,
Robert




More information about the TYPO3-german mailing list