0

1 つのフォームから 2 つのテーブルを更新する必要があります。TestA と TestB の 2 つのテーブルがあります。では、2 つのテーブルを更新するにはどうすればよいでしょうかTestB.testid=TestA.testid。両方のテーブルにデータが取り込まれます。TestA の ID に基づいて TestB を更新する必要があります。以下はactionUpdateTestAのです。

  public function actionUpdate($id)
        {       $model_A=new TestA;    
                $model_B=new TestB;    
            $model=$this->loadModel($id);
            if(isset($_POST['TestA'])&&isset($_POST['TestB']))
            {
                 $model_A->attributes=$_POST['TestA'];                   
                 $model_B->attributes=$_POST['TestB'];

                 $model_B->name="test";              

                 $model_A->save();
                 $model_B->save();    
            $this->render('update',array(
                'model'=>$model,
            ));
        }  

アプリケーションを実行すると、既存のエントリを更新する代わりに、TestB に新しいエントリが作成されます。テーブルTestBの行を更新するためにIDを渡すにはどうすればよいですか

4

3 に答える 3

2

これが更新である場合は、最初にデータベースから既存の値を取得する必要があります。次に、両方のモデルをフォームに送信する必要があります。

public function actionUpdate($id) {
    $model_A = TestA::model()->findByPk($id);
    $model_B = TestB::model()->findByAttributes(array('testid'=>$model_A->testid));
    if (isset($_POST['TestA']) && isset($_POST['TestB'])) {
        $model_A->attributes = $_POST['TestA'];
        $model_B->attributes = $_POST['TestB'];

        $model_B->name = "test";

        $model_A->save();
        $model_B->save();
    }
    $this->render('update', array(
        'model_A' => $model_A,
        'model_B' => $model_B,
    ));
}
于 2013-08-20T12:55:30.630 に答える