我有以下表格:
我想在创建新项目时,在 tbl_operation 中添加一些操作,然后将一些itemTypes添加到 tbl_itemType ,然后在 tbl_item <中添加一些项目/ strong>即可。如何在项目模型的 afterSave()行为中做到这一点?
我阅读了以下链接,但我不知道可以做到这一点吗?
答案 0 :(得分:1)
只需在ProjectModel
public function afterSave()
{
$operation_model = new Operation();
$operation_model->setAttributes($YOUR_DATA);
$operation_model->save(); // create your operation
// same goes for every other data you want to save
return parent::afterSave(); // keep the chain
}
答案 1 :(得分:1)
你可以利用这些关系。仅当相应关系仅包含要保存的模型时,此方法才有效。在您的控制器中有
$project->operations = array(/*your operations*/);
反过来,每个操作模型也可能具有相关的itemTypes
$operation->itemTypes = array(/*itemTypes for this operation*/)
最后,每个itemType
都可以包含相关的items
。
在afterSave
进行操作
public function afterSave() {
foreach ($this->operation as $op) {
$op->project_id = $model->id;
$op->save();
}
return parent::afterSave();
}
对于afterSave
和Operation
类的ItemType
,我们应分别保存相关的ItemType
和Item
。
答案 2 :(得分:1)
更好地使用afterSave()函数,我认为它适用于你