数据插入到yii中的多个表中

时间:2013-12-19 07:22:12

标签: mysql yii

我有两个表学生和学生详细信息

student table :
id,
student_id

studentdetails :
id,
student_id
name

我有一个学生详细信息的控制器和一个学生模型和另一个学生详细信息和一个学生详细信息视图

我需要当用户填写学生详细信息的表格时,应首先在学生表中输入,然后学生表的student_id进入yii的studentdetails表 。

4 个答案:

答案 0 :(得分:0)

我认为你正面临student_id字段的问题。

我希望,所需的任务是:在进入学生详细信息之前从学生表中选择学生ID

为此,请用下拉列表替换student_id字段(首先在student_details表单中提交)

      <?php
      $list = CHtml::listData(Student::model()->findAll(array('order' => 'student_id')), 'student_id', 'student_id'); 
      // echo $form->dropDownList($model, 'student_id', $list);
      echo CHtml::dropDownList('student_id', $model, $list);
      ?>

现在学生将选择他的身份并填写详细信息。

答案 1 :(得分:0)

为什么不尝试在模型中使用方法afterSave。它会为你做得很好

答案 2 :(得分:0)

试试这个

public function actionCreate()
{
   $model = new StudentDetails;
   $smodel = new Student;
   // Uncomment the following line if AJAX validation is needed
   $this->performAjaxValidation($model);
   if(isset($_POST['StudentDetails']))
   {
      $model->attributes=$_POST['StudentDetails'];
      if($model->save())
      {
        $sid = $model->id;
        $Student = StudentDetails::model()->findByAttributes(array('id'=>$sid));

        $smodel->student_id = $Student->student_id;
        $smodel->save();
        $this->redirect(array('view','id'=>$model->id));
      }
    }
    $this->render('create',array(
    'model'=>$model,
    ));
 }

答案 3 :(得分:0)

在StudentDetails模型上保持这种方法。

public function afterSave() {
        if($this->isNewRecord){
            $studentDetails = new StudentDetails();
            $studentDetails->student_id = $this->id;
            $studentDetails->name = STUDENT_NAME ;// from Yii::app()->user->id OR $_POST or other ; 
            $studentDetails->save();
        }
        return parent::afterSave();
    }