Mehrfach-Relationen möglich?

Einklappen
X
 
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge
  • sonar
    Gesperrt
    • 13.04.2010
    • 22

    #1

    Mehrfach-Relationen möglich?

    Hi,

    vorab: hab gesucht und nix gefunden – wenn das schon irgendwo geklärt ist, Links u.ä. werden gerne entgegengenommen…

    Frage: Wie kann ich per Catalog Mehrfach-Relationen (n:n, „HABTM“) definieren?

    Beispiel: Produkte und Zubehörartikel – jedes Produkt kann mehrere Zubehörartikel haben, und jeder Zubehörartikel kann wiederum auch zu mehreren Produkten gehören.
    Auf „nackter DB-Ebene“ legt man ja für sowas eine Schlüssel-Verknüpfungstabelle an; geht das mit der Catalog-Erweiterung, und wenn ja, wie..?

    Danke!
  • xtra
    Maintainer
    • 02.07.2009
    • 2007

    #2
    "von Haus aus" gibt es in ganz TYPOlight keine n:m Relationen.

    Du koenntest im Katalog jedoch versuchen das mit Selects zu realisieren.

    Dazu brauchst du zwei Kataloge:
    1. Produkte
    2. Zubehoere

    in beiden legst du nun ein Feld vom Typ Select (dt.: Auswahl) an, das auf die jeweils andere Tabelle verweist.
    Bei grossen Katalogen wird dies jedoch dann recht schnell unybersichtlich werden.

    Im Template wirst du dann aber einiges pfriemeln myssen, dass dies auch sauber aussieht.

    Gruss
    Chris
    Bedenke stets: Wenn Du ungenaue oder unzureichende Angaben machst, so koennte dies die Bearbeitung deiner Frage endlos verzoegern (oder sogar dazu fyhren, dass ich zu viel nachdenken muss und die Antwort vergesse!). Kein Support per PN.

    Kommentar

    • sonar
      Gesperrt
      • 13.04.2010
      • 22

      #3
      Hi, danke für deine Antwort!

      Zitat von xtra Beitrag anzeigen
      "von Haus aus" gibt es in ganz TYPOlight keine n:m Relationen.
      D.h. solche Relationen werden dann als (serialisierter) String in der DB gespeichert..?

      Zitat von xtra Beitrag anzeigen
      Du koenntest im Katalog jedoch versuchen das mit Selects zu realisieren.

      Dazu brauchst du zwei Kataloge:
      1. Produkte
      2. Zubehoere

      in beiden legst du nun ein Feld vom Typ Select (dt.: Auswahl) an, das auf die jeweils andere Tabelle verweist.
      Hm, damit hab ich aber z.B. trotzdem keine Mehrfachauswahl pro Produkt zur Verfügung, ich kann genau einen Zubehörartikel (oder eine Kategorie oder was auch immer) zuweisen.
      Also das isses nicht, oder hab ich was missverstanden..?

      Ich hab gerade gesehen, dass man sowas in der Art (Mehrfachauswahl) jedoch über den 'tags'-Feldtyp lösen kann (da steht dann in der DB tatsächlich ein String à la '1,2,3' im Feld).

      Funktioniert ja prinzipiell, nur is halt – wie von dir schon in der Art erwähnt – bei vielen Produkten/Zubehörartikeln (um bei dem Beispiel zu bleiben) ganz schnell Schluss mit der Übersichtlichkeit … gut, irgendwann ist TL halt nicht mehr das Mittel der Wahl, da sollte man dann eine dedizierte Shopsoftware bemühen, aber wie geht man sowas denn prinzipiell an?
      Also „ein Ding gehört zu mehreren Kategorien“ oder sowas in der Art …

      Kommentar

      • sonar
        Gesperrt
        • 13.04.2010
        • 22

        #4
        Nachtrag zu oben (Extra-Post, damit's kein Ewigkeits-Edit wird…):

        Die erwähnten Tags krieg ich (natürlich) nicht in eine Katalog-Navigation rein, richtig..?

        Nochmal ein Beispiel aus einem kommenden Projekt:
        Es gibt Kursbereiche und Trainer.
        Jeder Trainer ist für ein oder mehrere Kursbereiche zuständig.
        Nun möchte ich bei der Ansicht eines Kursbereichs die dazugehörigen Trainer sehen, und umgekehrt genauso: Beim Trainer möchte ich sehen, welche Kursbereiche er betreut. Und wie gesagt – es gibt Überschneidungen, es sind keine 1:1-Beziehungen.

        Wie löse ich sowas denn..?
        Hätte nicht gedacht, dass das so kompliziert ist … oder mach ich's zu kompliziert..?

        Kommentar

        • MacKP
          Contao-Yoda
          • 15.06.2009
          • 13315

          #5
          Hallo sonar,
          das könnte zum Teil auf jeden Fall gelöst werden.
          Zumindest eine Richtung ->
          Bei den Trainern ein Feldtyp Tag erstellen und dort dann die Projekte auswählen.
          Damit kann man dann schon mal bei den Trainern die Projekte darstellen (sollte auch mit dem Modul Referenzen gehen). Ich habs bisher nur von Hand gemacht.
          Den anderen Weg könntest du dann sicher mit einer SQL Abfrage im Template erschlagen...

          Kommt alles auf einen Versuch an ;-)

          Und wenn du es geschafft hast freuen wir uns alle über ein mini-Tutorial *g*

          Viele Grüße
          Contao Pool | C-C-A | MetaModels | [Internetseite -> Mediendepot Ruhr]
          [Arbeitet bei -> Paus Design & Medien]
          "I can EXPLAIN it to you, but I can't UNDERSTAND it for you."

          Kommentar

          • sonar
            Gesperrt
            • 13.04.2010
            • 22

            #6
            Hey MacKP, dank dir für die Antwort!
            Die Projekte/Kursbereiche sind jedenfalls vollwertige Datensätze mit Titel, Beschreibung etc. und nicht einfach Taxonomie-Kategorien/Tags o.ä. Nur, falls das nicht klar wurde …

            Und was meinst du mit dem „Modul Referenzen“..?

            Jedenfalls erfordert mein Vorhaben wohl einiges an Tüftelei, evtl. kann man ja mit FIND_IN_SET() bei den Bedingungen rangehen… muss gestehen, dass mir dieses ganze Catalog-Thema noch nicht so geläufig ist …

            Aber ist das denn so selten, dass man sowas braucht, also n:n-Relationen zwischen Tabellen..?

            Kommentar

            • xtra
              Maintainer
              • 02.07.2009
              • 2007

              #7
              Zitat von sonar Beitrag anzeigen
              Jedenfalls erfordert mein Vorhaben wohl einiges an Tüftelei, evtl. kann man ja mit FIND_IN_SET() bei den Bedingungen rangehen… muss gestehen, dass mir dieses ganze Catalog-Thema noch nicht so geläufig ist …
              Ja, das ginge auch.
              Dann haettest du jeweils nur noch einen Katalog mit einer Fremdreferenz zu belegen.
              Das wird dann ein schoenes SQL statement.

              Gruss
              Chris
              Bedenke stets: Wenn Du ungenaue oder unzureichende Angaben machst, so koennte dies die Bearbeitung deiner Frage endlos verzoegern (oder sogar dazu fyhren, dass ich zu viel nachdenken muss und die Antwort vergesse!). Kein Support per PN.

              Kommentar

              • MacKP
                Contao-Yoda
                • 15.06.2009
                • 13315

                #8
                Zitat von sonar Beitrag anzeigen
                Hey MacKP, dank dir für die Antwort!
                Die Projekte/Kursbereiche sind jedenfalls vollwertige Datensätze mit Titel, Beschreibung etc. und nicht einfach Taxonomie-Kategorien/Tags o.ä. Nur, falls das nicht klar wurde …

                Und was meinst du mit dem „Modul Referenzen“..?

                Jedenfalls erfordert mein Vorhaben wohl einiges an Tüftelei, evtl. kann man ja mit FIND_IN_SET() bei den Bedingungen rangehen… muss gestehen, dass mir dieses ganze Catalog-Thema noch nicht so geläufig ist …

                Aber ist das denn so selten, dass man sowas braucht, also n:n-Relationen zwischen Tabellen..?
                Äh, was ich mit Tags meine:
                Feldtyp Tag = Mehrfachauswahl aus einer beliebigen Tabelle d.h. nich unbedingt Taxonomie, sondern auch ein anderer Katalog

                So hat man dann eine Verknüpfung und braucht für die andere Seite nur selber noch ne umgedrehte Abfrage im Template machen ^^

                Viele Grüße
                Contao Pool | C-C-A | MetaModels | [Internetseite -> Mediendepot Ruhr]
                [Arbeitet bei -> Paus Design & Medien]
                "I can EXPLAIN it to you, but I can't UNDERSTAND it for you."

                Kommentar

                • sonar
                  Gesperrt
                  • 13.04.2010
                  • 22

                  #9
                  Danke für euren Input!
                  Dann werd ich mal sehen, wie ich das zusammenschraube … kann mich ja nochmal melden, wenn's geklappt hat (oder auch nicht…)

                  Kommentar

                  Lädt...