更新两个模型,一个视图在Yii中不起作用?

时间:2014-05-26 08:04:31

标签: php yii

有人可以帮我解决我的问题吗?我能够创建新记录,但我无法修改或更新现有记录。

这是我的源代码:

public function actionCreate() {
    $model = new Branchmaster;
    $user = new Usermaster;
    if(isset($_POST['Branchmaster'], $_POST['Usermaster'])) {
      $model->attributes=$_POST['Branchmaster'];
      $user->attributes=$_POST['Usermaster'];
      $valid=$model->validate();
      $valid=$user->validate() && $valid;
      if($valid){
         $model->save();
         $chnuser->save();                   
         $this->redirect(array('view','id'=>$model->Id));
      }
    }
    $this->render('create',array(
      'model'=>$model,
      'user'=>$user,
    ));
  }

  public function actionUpdate($id) {
    $model=$this->loadModel($id);
    $user = Usermaster::model()->findByAttributes(array('branch_id'=>$model->Id));
    if(isset($_POST['Branchmaster'], $_POST['Usermaster'])) {
      $model->attributes=$_POST['Branchmaster'];
      $user->attributes=$_POST['Usermaster'];

      $valid=$model->validate();
      $valid=$user->validate() && $valid;
      if($valid){
        $model->save();
        $user->save();
        $this->redirect(array('view','id'=>$model->Id));
      }
    }
    $this->render('update',array(
      'model'=>$model,
      'user'=>$user,
    ));
  }

我需要帮助解决这个问题...提前谢谢!

2 个答案:

答案 0 :(得分:0)

而不是找到' findByAttr'所以这将是

//请注意,$ id必须是此特定模型的主键

$user = Usermaster::model()->findByPk($id);

//如果情况不允许主键,那么我们可以进行查询执行

$update = Yii::app()->db->createCommand()
->update('usermaster', array('field1'=>'value','field2'=>'value2'),
'branch_id=:id',array(':id'=>$branch_id));

答案 1 :(得分:0)

您必须检查是否退出ID而不是必须更新...

使用findByPk加载模型......

比上面的过程要好 这是示例代码。你必须实现这些

         $model->attributes=$_POST['Branchmaster'];
         $user_post = $_POST['Usermaster'];
         $id = $user_post['id'];
         $user =  ModelName::model()->findByPk($id); 
         $user->variable_name = $variable_value


         $valid=$model->validate();
         $valid=$user->validate() && $valid;
         if($valid){
             $model->save();
             $user->save();
             $this->redirect(array('view','id'=>$model->Id));
         }

由于