0

Wie kann ich Felder verschiedener Tabellen in einem Formular anzeigen und gleichzeitig in der Datenbank speichern ... Das Szenario ist, wenn ich ein neues Formular zum Ausfüllen erhalte, Diese beiden Tabellen werden in derselben FORM zusammengeführt und wahrscheinlich gleichzeitig gespeichert. Das zweite Problem ist, "ID" (PK) von "Form" wird Nummer nach dem Speichern inkrementell generieren. Die Frage ist, wie kann ich den Wert von "id" (PK) in "Form" auf "forminfo_info" (FK) kopieren und spart ... Bitte Hilfe brauchen diese ..Yii2 Advanced Anzeigen und Speichern von Feldern zweier Tabellen in einem Formular

enter image description here

+0

Sie könnten das Bild tatsächlich anzeigen ... – Ian

+0

Sie können das Bild anzeigen. es wurde im Text verlinkt ... –

+0

Nvm, ich habe es für dich gemacht. Der Punkt besteht darin, das Bild und Ihre Frage auf derselben Seite zu platzieren, sodass es für die Nutzer einfacher ist, das Bild zu sehen und es mit Ihrer Frage zu verknüpfen. Willkommen beim Stapelüberlauf! – Ian

Antwort

0

Viele Ihre Frage ist wirklich erklärt here in the Yii2 guide.

Wie auch immer, hier ist, was ich in Ihrem ActionUpdate/actionCreate-Controller versuchen würde. . (Anmerkung: dieser Code ist nicht getestet, so dass es einige Korrekturen benötigen könnten, sollte aber Gesamtstruktur arbeiten)

// Create empty models, typically for actionCreate() 
$m1 = new Model(); 
$m2 = new AnotherModel(); 

// ...or load models using ids for actionUpdate($m1Id, $m2Id) 
$m1 = Model::findOne($m1Id); 
$m2 = AnotherModel::findOne($m2Id); 

// Try to populate the models from the request 
if ($m1->load(Yii::$app->request->post()) && $m2->load(Yii::$app->request->post())) { 
    // Models now loaded, but not validated 
    if ($m1->validate() && $m2->validate()) { 
     // Both models are now validated, save the first one 
     $m1->save(false); // No need to validate again 
     // Now Model has an id, save its id as a reference in AnotherModel 
     $m2->m1Id = $m1->id; 
     // ...or create a method in your Model-model for setting the foreign key 
     // $m2->connectModel($m1); // The fancier object oriented way 
     $m2->save(false); // Set true if you validate the foreign key 
    } 
} 

// Return view for rendering 

Wenn eine der beiden ausfällt save-Operationen (nicht im Code getestet), die Art ist ein fataler Fehler, der wahrscheinlich behandelt werden sollte. Im schlimmsten Fall könnte ein Modell gespeichert werden und nicht das andere, obwohl es unwahrscheinlich ist, dass die Validierung bestanden wird. Suchen Sie in Transaktionen nach "atomaren" Speichern (alles oder nichts speichern), wenn Ihre Datenbank es unterstützt, oder lassen Sie es einfach (ich denke am meisten lassen Sie es oder protokolliert einen Fehler für später).

+0

Danke @ Karpy47. Ich werde versuchen, diesen Code zu probieren ... :) –