[Frage] Extbase repository query unterobjekte filtern

  • zeitgenosse zeitgenos...
    Padawan
    0 x
    47 Beiträge
    0 Hilfreiche Beiträge
    11. 02. 2014, 09:30

    Hello,

    stehe gerade auf dem schlauch.

    Also ich habe ein Modell Garage, darin stehen Autos.

    Jetzt kann ich mir ohne Probleme alle Autos welche in einer Garage stehen ausgeben lassen:

    Autos Repository

    1. $query->matching($query->equals('pid', $garage));

    Ok, jetzt hat jedes Auto Bauteile (1:n Beziehung)

    Die bekomme ich ja ganz automatisch vom Repository zurückgeliefert.

    Jetzt haben aber die Bauteile noch einen Liferanten. Und ich hätte gerne alle Autos inklusive die Bauteile von Lieferant a, und zwar nur von Lieferant a.

    Ginge sowas direkt im Auto Repoitory oder muss ich dies im Controller oder erst im Template filtern?

    Grüsse


  • 1
  • Velletti Velletti
    R2-D2
    0 x
    83 Beiträge
    3 Hilfreiche Beiträge
    11. 02. 2014, 10:36

    Versucht habe ich das noch nicht über 3 Ebenenen,aber über 2:

    Ich habe eine Tabelle mit Brettspielen (Modell: "Game"). Die Spiele habe als 1:n verknüpfung über die Relation game2auszeichnungen die Info, ob sie mal Spiel des Jahres waren, oder sonst irgend eine Auszwichnugn hatten (Modell Auszeichnungen): die Relation im Extension Builder habe ich "game2auszeichnungen" genannt.

    wenn ich nun $value = "Spiel Des Jahres" an das Repository übergebe

    $queries = $query->equals( "game2auszeichnungen.name", $value ) ;

    du nun deine Relations so genannt haben solltest:
    Auto2Bauteil und Bauteil2Lieferant könntest du über vermutlich so alle beutiele vom Hersteller hella ausliefern lassen. ( oder statt .name mit .id arbeiten udn dann die ID des Herstellers suchen lassen,

    $queries = $query->equals( "Auto2Bauteil.Bauteil2Lieferant.name", "Hella" ) ;

    Grüße
    Jörg

    Typo3 seit 2010. Multilinguale (> 8 ) , Multi-Domain Installation aktuell unter 4.5.x LTS:
    Main used Extension: DAM, REAL URL, Powermail, tt_address, tt_news, cal, MM_forum (fork), Community (fork), Diversen eigenen extbase/Fluid extension

  • zeitgenosse zeitgenos...
    Padawan
    0 x
    47 Beiträge
    0 Hilfreiche Beiträge
    11. 02. 2014, 11:17

    Danke für deine Antwort. Dies geht leider nicht. Dann bekomme ich nur noch Autos zurück welche auch tatsächlich Bauteile von Lieferant a haben.

    Ich will aber alle Autos.

  • zeitgenosse zeitgenos...
    Padawan
    0 x
    47 Beiträge
    0 Hilfreiche Beiträge
    11. 02. 2014, 11:17

    Danke für deine Antwort. Dies geht leider nicht. Dann bekomme ich nur noch Autos zurück welche auch tatsächlich Bauteile von Lieferant a haben.

    Ich will aber alle Autos.

  • Velletti Velletti
    R2-D2
    0 x
    83 Beiträge
    3 Hilfreiche Beiträge
    11. 02. 2014, 11:59

    sorry frage richtig lesen :

    da ist vermutlich tatsächlich das Tempalte der richtige ort

    d.h. über den Controller den Lieferanten an das template übergeben z.b. als "filter.lieferant"

    und dann im Template über vermutlcih derartiges Konstrukt ..:

    <f:for each="{Autos}" as "{auto}">
    <f:for each="{auto.bauteile}" as "{bauteil}">
    <f:if condition="{bauteil.lieferant}={filter.lieferant}">

    Typo3 seit 2010. Multilinguale (> 8 ) , Multi-Domain Installation aktuell unter 4.5.x LTS:
    Main used Extension: DAM, REAL URL, Powermail, tt_address, tt_news, cal, MM_forum (fork), Community (fork), Diversen eigenen extbase/Fluid extension

  • mischa mischa
    Jedi-Meister
    0 x
    411 Beiträge
    5 Hilfreiche Beiträge
    15. 09. 2014, 13:05

    Etwas spät, aber vielleicht brauchts ja mal jemand anderes:

    1. $query->equals('auto.bauteil.lieferant.uid', 1);

    Holt dir alle Autos, deren Bauteile vom Lieferant mit der UID 1 stammen.

    LG,

    Mischa.

  • 1