Hallo,
ich habe zu diesem Thema folgende Frage: und zwar habe ich in einer
edit-View zwei Modelle abgebildet. Zum einem eine News und dann noch ein
Kommentar. Diese beiden sind mit einer 1:n-Beziehung (News : Kommentar)
versehen. Das bedeutet, in der News besteht ein $hasMany zu Kommentar
und im Kommentar ein belongsTo zu News. Mit den Beziehungen klappt auch
alles. Um nun im NewsController beide Models abzuspeichern, habe ich
folgendes geschrieben:
function edit($id = NULL)
{
if($id != NULL)
{
if(!empty($this->data))
{
$m = $this->Session->read('Member');
$this->data['News']['idchanged'] =
$m['idmem'];
// Kommentar füllen
$this->data['Kommentar']['idmem'] =
$m['idmem'];
$this->data['Kommentar']['idnew'] =
$this->data['News']['idnew'];
// Datensätze speichern
if(!empty($this->data['Kommentar']['txt']))
$this->News->Kommentar->save($this->data['Kommentar']);
$this->News->save($this->data['News']);
$this->redirect('...');
}
else
{ ... }
}
else ...
}
Ich möchte das News-Model und ein entsprechend abgegebenes Kommentar
speichern. So wie es momentan da steht, funktionier das alles, finde ich
aber doch sehr umständlich, da man bspw. das Kommentar-Model extra mit
der News-Id befüllen muss. Diese stehen ja eigentlich in Beziehung. Ist
es da möglich, beim Speichern einer News ein Kommentar automatisch
mitzuspeichern und die News-Id ins Kommentar übertragen zu lassen? Denn
wenn ich Kommentar->save nicht aufrufe, wird dies auch nicht
gespeichert, trotz News->save. Oder hab ich da einfach nur einen
Denkfehler?
Gruß
-----Ursprüngliche Nachricht-----
Von: [email protected] [mailto:[EMAIL PROTECTED] Im
Auftrag von David Persson
Gesendet: Samstag, 12. Juli 2008 19:21
An: CakePHP-de für deutsche CakePHP Entwickler
Betreff: [cakephp-de] Re: Aus einer View mehrere Models "befüllen"
1.)
Es wäre besser du würdest dein Model und Tabelle von UserRight bzw.
user_rights in Right respektive rights umbennen. UserRight könnte u.U.
auch ein join table für User und Right sein.
2.)
Die Beziehungen sollten wie folgt definiert sein:
Right hasOne User
User belongsTo Right
Außerdem sollte dein users table ein right_id Feld haben.
Ansonsten nochmal im Book unter hasOne und belongsTo nachschauen! Ich
glaub du hast das etwas verdreht oder ich verstehe dich nicht richtig.
3.)
Im Controller mußt du dann in deinen edit und add actions etwas haben
wie:
$rights = $this->User->Right->find('list');
$this->set('rights',$rights);
4.)
Im korrespondierenden View dann innerhalb des Formulars:
$this->input('User.right_id');
Das input Feld wird dann mit dem Inhalt von der rights liste befüllt und
als Select dargestellt.
On 12 Jul., 18:01, darki <[EMAIL PROTECTED]> wrote:
> hallo,
>
> ich habe ein kleines problem, an dem ich mir als noob aber total
> zähne ausbeiße.
>
> das problem ist folgendes (ich erkläre es am besten an einem
> beispiel). ich habe 2 tabellen "users" und "user_rights" und damit die
> beiden Models "User" und "UserRight"
>
> ich habe nun eine view für user, wo ich einen user mit den daten aus
> "users" hinzufügen kann. jeder user hat aber noch bestimmte rechte
> ("user_rights"), diese werden aber nicht in dieser view abgebildet
>
> nun meine frage: ich möchte in der User-view gern daten für beide
> models eingeben können, so dass die tabellen dann dementsprechend
> befüllt werden. diese beiden stehen in "user hasone userright"
> zueinander.
>
> wie kann ich das bewerkstelligen? ich bin am verzweifeln :( habe schon
> allerlei gegoogled, aber nichts brauchbares gefunden...
>
> ich würde auch gern mehrere models in einer view darstellen, so dass
> zum beispiel (auf oben bezogen) die user und deren rechte in einer
> view dargestellt werden
>
> hoffe ihr könnt mir helfen und lacht mich nicht aus ;)
--~--~---------~--~----~------------~-------~--~----~
Bitte bei Fragen immer auch die aktuell verwendete cakePHP Version angeben und
wenn möglich auch das verwendete Betriebssystem und die PHP Version. Danke.
Sie erhalten diese Nachricht, weil Sie Mitglied sind von Google Groups-Gruppe
"CakePHP-de für deutsche CakePHP Entwickler".
Für das Erstellen von Beiträgen in dieser Gruppe senden Sie eine E-Mail
an [email protected]
Um sich von dieser Gruppe abzumelden, senden Sie eine E-Mail an [EMAIL
PROTECTED]
Weitere Optionen finden Sie in dieser Gruppe unter
http://groups.google.com/group/cakephp-de?hl=de
-~----------~----~----~----~------~----~------~--~---