在Yii中保存模型后,在多个表中保存多个记录

时间:2014-07-23 09:13:56

标签: php yii

我有以下表格:

  1. tbl_project( id ,说明)
  2. tbl_operation( id project_id ,名称)
  3. tbl_itemType( id operation_id ,名称)
  4. tbl_item( id itemType_id ,名称,单位,价格)
  5. 我想在创建新项目时,在 tbl_operation 中添加一些操作,然后将一些itemTypes添加到 tbl_itemType ,然后在 tbl_item <中添加一些项目/ strong>即可。如何在项目模型的 afterSave()行为中做到这一点?

    我阅读了以下链接,但我不知道可以做到这一点吗?

    esaverelatedbehavior

3 个答案:

答案 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();
}

对于afterSaveOperation类的ItemType,我们应分别保存相关的ItemTypeItem

答案 2 :(得分:1)

更好地使用afterSave()函数,我认为它适用于你