1

Yii 多模型表单中,我们只是使用 actionCreate() 在单个视图中创建两个模型的表单。好的,到这里为止一切都很好。但是当我们在多模型的单个视图中更新两个模型时,模型将如何在这里定义? 举个例子吧,想想数据库就是这样

 === Project ===
  id
  task_id(FK)
  description

  === Task ===
  id
  name
  description

所以在项目控制器的 actionCreate() 中,代码会是这样的

    public function actionCreate()
  {
    $model=new Projects;
    $tasks=new Projects;

    // Uncomment the following line if AJAX validation is needed
    // $this->performAjaxValidation($model);
    if (isset($_POST['Projects'],$_POST['Tasks']))
    {
      $model->attributes = $_POST['Projects'];
      $tasks->attributes = $_POST['Tasks'];
      $valid = $model->validate();
      $valid = $tasks->validate();
      if($valid)
      {
        $model->save(false);
        $tasks->save(false);
        $this->redirect(array('view','id'=>$model->id));
      }
    }
    $this->render('create',array(
      'model'=>$model,
      'tasks'=>$tasks,
    ));
  }

现在,这两个模型都可以创建了。那么该怎么做?如何声明这两个模型?任何帮助actionView()actionUpdate()建议都将非常有用。

4

2 回答 2

0

这真的不一样吗?加载视图/更新时,您只需要在 GET 中有 ID,它会告诉您要加载哪些模型。如果使用 ActiveRecord,模型将是 Projects::model()->findByPk($myId)。更新时,您可以像使用 create 一样分配属性,但请确保首先从数据库加载模型。

于 2012-02-17T14:19:59.943 回答
0

您没有为 Task 模型创建任何对象。

于 2013-06-03T13:19:57.203 回答