[TYPO3-german] Extbase-Entwicklung: Organisation der Rückgabedaten aus Repositry

Marcus Budzyn marcus at budzyn.de
Tue Sep 16 01:47:00 CEST 2014


Extbase-Entwicklung, TYPO3 Version 6.2

Ich portiere derzeit eine (meine :-)) Extension zur Anzeige von Schachturnierergebnissen von pibase nach ExtBase.

Hier kurz ein Ausschnitt aus meinem Modell:
Ein Tournament hat (n) Rounds, jede Round hat (n) Games. Zu jedem Game gibt es genau einen WhitePlayer und genau einen BlackPlayer. 

Habe in meinem Game-Repository eine Funktion geschrieben, welche mir zu einem gegebenen Player alle Games auswirft, an denen der Player beteiligt ist (ob als WhitePlayer oder als BlackPlayer). Zurückgegeben werden Game-Objekte, durch die ich in Fluid mit for-each schön iterieren kann. 

/**
 * Finds games by the specified round and player
 *
 * @param  \MPB\Scsuite\Domain\Model\Round $round
 * @param  \MPB\Scsuite\Domain\Model\Player $player
 * @return \TYPO3\Flow\Persistence\QueryResultInterface  
 */
    public function findGamesOfPlayer(\MPB\Scsuite\Domain\Model\Round $round, \MPB\Scsuite\Domain\Model\Player $player )
    {
        $query = $this->createQuery();
        return $query->matching(
                        $query->logicalOr(
                                $query->equals('relPlayerBlack', $player),
                                $query->equals('relPlayerWhite', $player)
                        )
                )
            ->execute();
    }

Aber: Jetzt hätte ich aber auch gerne zu jedem Game einige Informationen aus der dazugehörigen Round ausgegeben - und diese Informationen möchte ich nicht redundant in der Game-Domäne speichern, sondern nur in der Round-Domäne belassen. 

Meinen Gedanken bislang:

Möglich wäre, dass ich einfach in der Game-Domäne auch eine 1:1-Relation zur Round-Domäne aufnehme und dann mit der Punkt-Notation in Fluid die Daten hole, sowas wie {Game.RelRound.EventDate} (Habe mir angewöhnt die Relationsfelder mit "Rel" zu präfixen.). Das würde aber ein zusätzliches Feld in der Game-Domäne bedeuten.

Ein andere Möglichkeit wäre es, in einem Statement die notwendigen Joins zu erledigen und die Daten, welche mich interessieren wieder per DataMapper in entsprechende Objekte zu "konvertieren". Das wäre dann beispielsweise ein Array von Game-Round-Paaren.
Die zweite Möglichkeit habe ich noch nicht ausprobiert, das ist bislang nur ein vager Gedanke.

Gibt es bessere Möglichkeiten? 

Vielen Dank für Eure Anregungen und Mühen

Marcus


More information about the TYPO3-german mailing list