Koppeltabellen

Hallo,

ich hoffe ich nerve nicht langsam :smiley:

Ich bin gerade dabei ein Programm mit sehr vielen Koppeltabellen in der Datenbank zu erstellen. Wie löst man das Korrekt in Yii und korrekt im MVC Muster auf? Man kann sich ja nur ein Modell von Koppeltabellen mit einem zusammengesetzten Primärschlüssel erstellen lassen, CRUD geht leider nicht. Ich hab dann sogar ganz auf das Modell der Koppeltabellen verzeichtet und im Modell einer der beiden Tabellen die die Tabelle verbindet Methoden erstellt mit denen ich Datensätze in die Koppeltabelle einfügen kann (hartes SQL). Zum Beispiel über addFrage($idFragebogen) kann ich die gerade angezeigte Frage über ein Formular einem Fragebogen über eine Koppeltabelle zuweisen. Ich hab das dann so umgesetzt das ich am Anfang des Views entscheide welcher Fall eintritt (create/update/delete) und das dann über ifs aufgedröselt. In den If zweigen rufe ich dann die schon erwähnten methoden mit den objekten des views auf. Ist das so korrekt? Gibt es eine einfachere/bessere lösung (ich muss das noch bei 6 weiteren Kopplungen machen).

Grüße

Martin

Fragen kostet nichts, also nur zu ;)

Prinzipiell find ich den Ansatz mit addFrage() vernünftig. Ob du dort dann SQL oder ein eigenes Model verwendest ist Geschmackssache. Die Unterscheidung im View hab ich aber noch nicht ganz kapiert. Kannst du da evtl. kurz etwas Pseudo-Code zeigen, wie die Logik dort aussieht?

Zum Beispiel in der show.php habe ich ein Formular am ende eingebaut das über $_SERVER['php_self'] sich selbst als Ziel hat. Am Anfang der Datei habe ich dann

Diese Fallunterscheidung eingebaut die dann wiederrum managt welche Methoden wie Aufgerufen werden. Die Frage ist halt, ist das Sauber so? Oder kann ich das irgendwie in einen Controller packen und wenn ja wie? Ein ausführliches Beispiel wäre Klasse wenn das so nicht gut ist, blicks nicht so gut mit den ein Zeilen Beispielen :smiley:

Wieso packst du das nicht 1:1 in die Action in deinem Controller? Im View sollte wirklich nur Ausgabe/Anzeige passieren. Sämtliche Geschäftslogik sollte vorher im Controller abgewickelt werden.

Zur Logik lässt sich so noch nicht viel sagen. Evtl. könntest du ja in ein paar Sätzen beschreiben, welche Models es gibt, wie sie zueinander in Beziehung stehen, und was auf der Seite grob passieren soll.

Ja ich habs jetzt in den Controller reingepcakt der dann die Methoden des des Modells aufruft. Leider funktioniert die Rechteverwaltung nicht. Der Controller sieht wie folgt aus:

Warum wird die action create oder was auch immer trotzdem aufgerufen wenn ich die index.php?r=fragefragebogen/create aufrufe? Normal musste da dann doch Unauthorized oder was uach immer kommen, tut es aber nicht.

  1. Du musst den accessControl-Filter für den Controller aktivieren.
  1. Die URLs würd ich anders erzeugen, sonst bekommst du später evtl. Probleme mit friendly URLs, falls du die verwenden möchtest:

ok super, vielen danke jetzt funktioniert alles tadellos. Danke für den tipp mit den urls, ist echt besser so.

Ähmmm, hi, also mir fehlt hier was, einige Inhalte, z.B. die Links, werden nicht angezeigt… kann man die links in diesem Thread bitte nochmal einfügen, interessiert mich auch, danke!

Hmm. Das scheint bei der Umstellung auf das neue Forum verloren gegangen zu sein. Ich poste mal in den entsprechenden Thread, evtl. liegen die alten Daten noch irgendwo und können gerettet werden.