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.