48 Nachrichten unter 17 Themen von 24 Mitgliedern
[SilverStripe Roadmap][Changelog]

m:n Beziehungen

Seite: 1 770 mal gelesen
  • Conan
    Community Member
    37 Beiträge

    m:n Beziehungen

    wie entscheide ich bei 2 Klassen, die in einer m:n, also viele:viele Beziehung zueinander stehen, in welcher von beiden ich die Variable $many_many definiere und in welcher die Variable $belongs_many_many ?

    In Kapitel 6 zum Beispiel steht in der Developer Klasse $many_many und in der Skill Klasse $belongs_many_many.
    Wir wissen, dass die Fähigkeiten dem Entwickler untergeordnet sind, aber auf der Datenbankebene sehen die Tabellen ziemlich gleichberechtigt aus.

    Warum ist es berhaupt erforderlich, einmal $many_many und einmal $belongs_many_many zu schreiben, geht nicht einfach beidemale $many_many oder tut das dem cms weh und es tropft eine Träne aus meinem Monitor? (Dann würde ich das natürlich niemals so schreiben)
  • Tobias

    131 Beiträge

    Re: m:n Beziehungen

    Hallo Conan,

    ich würde mir schon mal einen neuen Monitor anschaffen - bei so viel Wasser leidet die Elektronik ;)

    Welche Klasse $many_many bekommt und welche $belongs_many_many ist grundsätzlich egal. Es wird eine Tabelle in der Form Klasse1s_Klasse2s (s hinten ist Mehrzahl-s im englischen) angelegt, wobei Klasse1s die Klasse ist, die $many_many enthält, Klasse2s die, die $belongs_many_many definiert. Letztlich ist es eine Geschmacksfrage, welche Reihenfolge besser passt ... Warum $belongs_many_many gewählt wurde? Diese Frage kann ich leider nicht beantworten - vielleicht nur als Unterscheidungsmerkmal.

    Ciao ... Tobias

    Tobias, Forum-Team

  • Conan
    Community Member
    37 Beiträge

    Re: m:n Beziehungen

    perfekt, danke.
    hab damit mal etwas experimentiert und in phpmyadmin angeschaut, und tatsächlich, du hast recht :-)
  • baba-papa
    Community Member
    22 Beiträge

    Re: m:n Beziehungen

    Das System muss für die Relation eine eigene Tabelle anlegen. Ich denke mal, dass die many_many Definition das Anlegen der Tabelle triggert. Sonst würde das System beim flushen ev zwei Tabellen anlegen.

Zur Zeit online: Zur Zeit ist leider niemand online.

Wir begrüßen unsere neuen Mitglieder: saerdna