如何在一个表单中显示不同表的字段并在数据库中一次保存...场景是当我收到一个新表单时,这两个表将合并在同一个FORM中并可能保存同时。第二个问题是,“形式”的“id”(PK)将在保存后逐步生成数字。问题是如何在保存时将“形式”中“id”(PK)的值复制到“forminfo_info”(FK)...请在这方面提供帮助..
答案 0 :(得分:0)
你的很多问题都得到了解释here in the Yii2 guide。
无论如何,这是我在actionUpdate / actionCreate-controller中尝试的内容。 (注意:此代码未经过测试,因此可能需要一些修复,但总体结构应该有效。)
// 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
如果两个保存操作中的任何一个失败(未在代码中测试),那可能是应该处理的致命错误。最糟糕的情况是,最终可能会保存一个模型而不是另一个模型,尽管如果验证通过则不太可能。查看" atomic"的交易保存(全部或全部保存),如果您的数据库支持它,或者只是保留它(我想大多数只是保留它或记录错误以供以后使用)。