2016-11-07 5 views
0

데이터베이스의 교육 테이블에 현재 user_id를 저장하려고합니다. 그러나 user_id의 데이터는 채워지지 않습니다. 이것은 내 코드입니다. 컨트롤러에서 모델데이터베이스에 현재 user_id를 저장하는 방법 (YII2)

public function rules() 
{ 
    return [ 
     [['year', 'fieldstudy', 'institute', 'grade'], 'required'], 
     [['user_id'], 'integer'], 
     [['year', 'fieldstudy', 'institute', 'grade'], 'string', 'max' => 255], 
    ]; 
} 


public function attributeLabels() 
{ 
    return [ 
     'education_id' => 'Education ID', 
     'user_id' => 'User ID', 
     'year' => 'Year', 
     'fieldstudy' => 'Fieldstudy', 
     'institute' => 'Institute', 
     'grade' => 'Grade', 
    ]; 
} 

public function getUser() 
{ 
    return $this->hasOne(User::className(), ['user_id' => 'user_id']); 
}  

에서

 public function actionCreate() 
{ 
    $model = new Education(); 
    $model->user_id =Yii::$app->user->id; 

    if ($model->load(Yii::$app->request->post()) && $model->save()) { 

     return $this->redirect(['view', 'id' => $model->education_id]); 
    } else { 
     return $this->render('create', [ 
      'model' => $model, 
     ]); 
    } 
} 

어떻게 내 문제를 해결하고 내 코드를 해결할 수 있습니까? 감사합니다

+0

시도해보십시오. Yii :: $ app-> user-> user_id –

+0

새로운 교육용 인스턴스는 user_id에 적합한 코드없이 db에 저장되거나 저장되지 않습니까? – scaisEdge

답변

0

업데이트 Yii::$app->user->id to Yii::$app->user->identity->id.

public function actionCreate() 
    { 
     $model = new Education(); 

     if ($model->load(Yii::$app->request->post())) { 
     $model->user_id =Yii::$app->user->identity->id; 
     if($model->save()){ 
      return $this->redirect(['view', 'id' => $model->education_id]); 
     } 
     } 
      return $this->render('create', [ 
       'model' => $model, 
      ]); 
    } 
+0

여전히 user_id 열의 값이 0입니다. @jithin – Fyp16

+0

내 대답을 업데이트했습니다. pls 새 코드를 시도하십시오. – jithin

+0

빈 페이지로 이동합니다. @ jithin – Fyp16

0

당신은 사용자가 로그인

  1. 확인 여부를 두 가지

    을 확인해야합니다. 우리가 코드로 로그인 한 사용자의 ID 값을 받고 있는지
  2. 사용 Yii2 디버거보고 Yii::$app->user->id 또는 Yii::$app->user->id
확인

사용 Yii2 디버거 여부를 우리가 코드

를 사용하여 점점 올바른 사용자 ID 값 당신이 컨트롤러에 시도해야
Yii::info("User id=".Yii::$app->user->id); 

전체 코드는 이제 응용 프로그램을 실행 한 후 다양한 장소에서 사용자 ID에 설정된 값 Yii2 디버거를 사용하여 확인할 수 있습니다

public function actionCreate() { 
     $model = new Education(); 

     //checking whether we are getting the logged in user id value 
     Yii::info("User id=".Yii::$app->user->id); 

     $model->user_id = Yii::$app->user->id; 

     if ($model->load(Yii::$app->request->post()) && $model->save()) { 

      //checking here the saved user id value in table 
      Yii::info("checking User id after saving model=".$model->user_id); 

      return $this->redirect(['view', 'id' => $model->education_id]); 
     } else { 
      return $this->render('create', [ 
         'model' => $model, 
      ]); 
     } 
    } 

아래에 주어진다.

+0

열 user_id 여전히 0 @ajith – Fyp16

+0

@ Fyp16 내 업데이트 된 답변을 참조하십시오. – Ajith