Update eines Datenbankmodells

Hallo Leute,

ich bin gerade dabei mich in das Yii Framework einzuarbeiten mit dem ich ein Projekt für meine Bachelorarbeit umsetzen soll. Bei der Arbeit handelt es sich um die Entwicklung eines Studierfähigkeitstestes auf Webapplikationsbasis.

Ich habe dazu noch ein paar Frage der Umsetzung betreffend weil ich gerade voll auf dem Schlauch stehe und leider nicht weiterkomme, dies aber müsste, ihr wisst schon was ich meine :wink:

Ich bin gerade dabei mit das Framework anhand der Tutorials und er vorhandenen anleitungen beizubringen bin aber dann recht schnell an meine und an die Grenzen der Anleitungen gestoßen. Wie kann ich die Datei mit den CRUD Operationen und das Modell Updaten nachdem ich etwas am Datenbankschema verändert habe ohne das ich die Dateien löschen und wieder alles was ich schon selber entwickelt habe wieder Updaten muss, es ist zwar jetzt noch nicht viel aber es wird denke ich wenn ich die ganzen ausnahmen und so weiter mit reinbringe einiges werten. Meine erste Frage ist also wie kann ich das Datenbankmodell verändern und die Änderungen im Yii nachziehen?

Meine zweite Frage betrifft wiederrum das Datenbankschema. Ich habe Tabellen die mit anderen Tabellen über Fremdschlüssel verbunden sind. Wie kann ich erreichen das diese Fremdschlüssel in der Form der Tabelle in der der Fremdschlüssel gespeichert ist also in der die Referenziert als Drop Down Field vorhanden ist und ich dort den Wert auswählen kann?

Ich hoffe ihr könnt mir weiterhelfen und meine fragen sind nicht all zu blöd. Ich fange halt gerade erst damit an mich in das Framework einzuarbeiten. Gibt es eigentlich ein Buch in dem das Framework näher beschrieben ist wie zu Symphonie und Prado?

Grüße

Martin

Ja das ist soweit ich weiß noch eine Schwäche. Du könntest alle Klassen erweitern, sprich von ihnen Ableiten und diese nutzen. Allerdings sind die Views dann immernoch veraltet.

Christian

Da muss ich Christian recht geben, die CRUD-Operation kannst du tatsächlich nur ein mal machen, und alles wird überschrieben. Du kannst den CRUD-Generator aber anfangs so anpassen, das er alles möglichst nach deinen Wünschen anpasst - anschliessende Änderungen, zum Beispiel das Einfügen eines neuen Feldes, gehen dann Ratzfatz durch 2 Schritte, nämlich 1.) Anpassen des Views und 2.) Setzten des neuen Feldes im Model.

Eine Lösung durch ein Plugin oder ähnliches gibt es also auch nicht? Hmm… das ist schade, wenn jemand was weiß könnte er sich ja bei mir per eMail melden, oder aber eben hier. Hat mein Problem einen englischen Namen? Weiß das jemand weil ich kann ja nicht der einzige sein der dieses Problem hat oder?, dürfte ja recht verbreitet sein.

Hat zu meiner anderen Frage wegen dem Fremdschlüssel irgendjemand irgendeine Idee?

Grüße Martin

Soweit ich dein Problem verstanden habe, löst du es folgendermaßen:

Du setzt eine CHtml::dropDownList() (http://www.yiiframework.com/doc/api/CHtml#dropDownList) an die entsprechende Stelle in deinem View. Der Inhalt der Dropdown-Liste liefert dir eine Funktion, die du im Controller baust, beispielsweise ein $fremdschlüsselobjekt->getOptions(). Diese Option liefert Objektinstanzen zurück. Die Dropdown-Liste formatiert das alles dann zu einem Html-Gebilde.

Nochmal zu dem ändern der angelegten CRUD-Seiten: Das Prinzip ist ja von Ruby on Rails übernommen. Gibt es denn hier eine Möglichkeit, generierte Cruds nachträglich automatisiert mit der Datenbank abzugleichen? Ich stelle mir das rein logisch sehr schwierig umzusetzen vor, woher soll der Generator schliesslich wissen, welche Felder er anfassen soll, und welche nicht.

Hallo,

konnte das Problem lösen. Hab aber nochmal einen anderen Lösungsweg gewählt:

<?php echo CHtml::activeDropDownList($studiengang,'idHochschule', CHtml::listData(Hochschule::model()->findAll(array('select'=>'idHochschule, Hochschulname')),'idHochschule','Hochschulname')); ?>

Geht so auch ganz wunderbar. Danke für die Hilfe.