Repository Abfragen verbinden

  • jank jank
    Sternenflotten-Admiral
    0 x
    158 Beiträge
    0 Hilfreiche Beiträge
    08. 06. 2011, 13:24

    wir kann ich das Ergebnis von 2 Repository Funktionen verbinden um es der gleichen View übergeben zu können?
    ich habe es mit dem zusammensetzen der Variable versucht:

    1. $exhibitions = $this->exhibitionRepository->findUpcoming();
    2. $exhibitions .= $this->exhibitionRepository->findPast();

    Danach kommt nur noch eine leere Seite, nicht mal eine Fehlermeldung...


  • oliver_g oliver_g
    R2-D2
    0 x
    71 Beiträge
    0 Hilfreiche Beiträge
    08. 06. 2011, 13:58

    Was meinst du mit "verbinden"? Wenn du eine Vereinigung der beiden Mengen meinst, musst du das wohl manuell programmieren... Oder du schreibst eine manuelle Abfrage, die dir das gewünschte liefert.

  • jank jank
    Sternenflotten-Admiral
    0 x
    158 Beiträge
    0 Hilfreiche Beiträge
    08. 06. 2011, 14:20

    mit verbinden meine ich, dass ich die Ausgabe von 2 Funktionen im gleichen Repository habe. Die eine liefert mir alle kommenden events, die Zweite alle bereits verstrichenen.

    Um nun die verstrichenen Events hinter die noch kommenden zu sortieren wollte ich das eben so machen... vielleicht gibt es auch einen besseren weg. Per Ordering ist das glaube ich nicht möglich.

  • oliver_g oliver_g
    R2-D2
    0 x
    71 Beiträge
    0 Hilfreiche Beiträge
    08. 06. 2011, 14:46

    Ich versteh leider immer noch nicht ganz... Warum schreibst du nicht eine Repository-Methode, die dir das liefert, was du haben möchtest? Quasi eine $exhibitionReposity->getUpcomingAndPast()...

  • jank jank
    Sternenflotten-Admiral
    0 x
    158 Beiträge
    0 Hilfreiche Beiträge
    08. 06. 2011, 14:52

    Das wäre auch eine Möglichkeit, wenn ich dafür sorgen könnte das eben erst kommende events und danach abgelaufene erscheinen, sonst kann ich ja gleich mit findAll() arbeiten.

    ich brauche halt die Ausgabe ala:

    + 09.06.2011 Messe X -> comming
    + 15.07.2011 Messe Y -> comming
    - 01.01.2011 Messe A -> past
    - 05.02.2011 Messe B -> past

  • zeitgenosse zeitgenos...
    Padawan
    0 x
    47 Beiträge
    0 Hilfreiche Beiträge
    09. 06. 2011, 15:31

    Und warum nicht so?

    1. $this->view->assign('comming', $this->exhibitionRepository->findUpcoming());
    2. $this->view->assign('past', $this->exhibitionRepository->findPast());

  • jank jank
    Sternenflotten-Admiral
    0 x
    158 Beiträge
    0 Hilfreiche Beiträge
    09. 06. 2011, 15:45

    weil ich so doch im Template zusätzlich marker für vergangene Messen einfügen muss...

    alle datensätze sollen nachher in die gleiche Tabelle, nur eben die verstrichenen zuletzt.

    ich habe schon versucht im model einfach einen funktion getPast anlzulegen die mir zurückliefert ob schon verstrichen oder nicht... aber diese kann ich glaube ich nicht im repository für setOrderings ansprechen, oder?

  • zeitgenosse zeitgenos...
    Padawan
    0 x
    47 Beiträge
    0 Hilfreiche Beiträge
    09. 06. 2011, 16:33

    [quote="jank"]
    weil ich so doch im Template zusätzlich marker für vergangene Messen einfügen muss...
    [/quote]

    ja das ist so, aber ist das ein problem??? vielleicht verstehe ich auch nicht um was es genau geht?

    1. <table>
    2. <f:for each="{comming}" as="eventcomming">
    3. <tr><td>eventcomming.value1</td><td>eventcomming.value2</td></tr>
    4. </f:for>
    5. <f:for each="{past}" as="eventpast">
    6. <tr><td>eventpast.value1</td><td>eventpast.value2</td></tr>
    7. </f:for>
    8. </table>

    alle datensätze sollen nachher in die gleiche Tabelle, nur eben die verstrichenen zuletzt.

    ich habe schon versucht im model einfach einen funktion getPast anlzulegen die mir zurückliefert ob schon verstrichen oder nicht... aber diese kann ich glaube ich nicht im repository für setOrderings ansprechen, oder?

  • jank jank
    Sternenflotten-Admiral
    0 x
    158 Beiträge
    0 Hilfreiche Beiträge
    09. 06. 2011, 21:22

    Hallo zeitgenosse,
    danke für den Tip.
    Diese Lösung ist zwar eine Möglichkeit, aber gerade bei vielen values mit N:M Verknüpfungen usw. ist das nicht "schön" bei jeder Änderung gleich alles doppelt zu machen.
    Deswegen wollte ich das eben über den controller oder im repository angehen und nicht im view.
    Gibt es noch eine andere Möglichkeit die Ergebnisse von 2 querys zu verbinden?
    Zurück kommen ja eigentlich 2 arrays oder verstehe ich das falsch?

  • jank jank
    Sternenflotten-Admiral
    0 x
    158 Beiträge
    0 Hilfreiche Beiträge
    09. 06. 2011, 22:39

    so habe nun herausgefunden, das ich garkein array bekomme, sondern ein objekt vom typ Tx_Extbase_Persistence_QueryResultInterface, dass kann ich zwar zu einem array machen ($query->execute()->toArray();) aber es wird nicht empfohlen
    http://forge.typo3.org/projects/typo3v4-mvc/wiki/QueryResult

    Gibt es eine Möglichkein die 2 objekte zu verbinden?