Zum Inhalt springen

In Datenbankabfrage Kindobjekt abfragen?

Erstellt am 25. Januar 2012 · 5 Antworten · letzte Antwort am 27. Januar 2012

Tags: Datenbank, Frage

besucher80 ·

Hi, ich habe 3 Tabellen. Eine Hauptkategorie, wo Kategorien angelegt werden. Also der Name. Dann Unterkategorien, wo Unterkategorien angelget werden und einer Hauptkategorie zugeordnet werden. Und eine Listing Tabelle, wo die Verknüpfungen gespeichert werden z.B. FirmenID, HauptkategorieID, UnterkategorieID. Okay. Ich habe nun ein Repository für die Listing Objekte erstellt. Wenn ich nun mit findAll() eine Abfrage mache, bekomme ich auch alle Listing Objekte ausgegeben. Und ich kann im Fluid Template mit listing.unterkategorie.name auf den Namen zugreifen. Ich möchte jetzt aber ne Abfrage, die mir nicht alle, sondern nur Objekte rausgibt wo der Unterkategoriename = "xyz" ist. Wie kann ich denn in der Abfrage auf Eigenschaften der Kindobjekte zugreifen? ->matching(contains('listing.unterkategorie.name','xyz')); klappt schonmal nicht.

BFSven ·

Hallo,

eine erste Idee - ohne es auszuprobieren - ist, dass Du Dir erst die Unterkategorie holst

$unterkategorie = $unterkategorieRepository->findByName('UName');

und damit dann in Listing suchst:

$liste = $listingRepository->findByUnterkategorie($unterkategorie);

Alles ohne Gewähr, ist nur ein Ansatz

besucher80 ·

Hi, supi. Also der Gedanke war mir ehrlich gesagt auch schon gekommen aber ich habe für die Unterkategorien kein Repository. Listing, Hkat, UKat ist ein Aggregat und Listing soll die Root sein. Dachte ich kann das dann über das Listing-Objekt per Traversion machen.

besucher80 ·

Guten Morgen,

ist meine Frage echt so exotisch? Ich kann mir immer nicht vorstellen, dass ich der Einzigste bin der sowas machen möchte 😃

Naja , vielleicht hat der Ein oder Andere noch Anregungen.

p.S.: Sven: Deine Variante klappt natürlich , aber es muss doch evtl. auch einfacher gehen, also nur mit einem Repository.

BFSven ·

Moin,

Ich sehe noch 2 (halbwegs) saubere Möglichkeiten
1. Du erstellst Dir das Objekt Unterkategorie selbst (wobei ich dann nicht weiß, ob er es nicht auch neu ins Rep schreibt)
2.1 Du erstellst im Repo Listing eine neue Methode, der Du den Namen der Unterkategorie übergibst und die sich selbst das Objekt aus dem UnterkategorieRepository holt
2.2 Du erstellst einen Service, dem Du den Namen der Unterkategorie übergibst und welches Dir dann das Listing zurückgibt, welches nur diese UK enthält, entsprechend meinem vorherigen Post.