2016-11-07 11 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, 
     ]); 
    } 
} 

Как я могу решить мою проблему и исправить мой код? Thanks

+0

try Yii :: $ app-> user-> user_id –

+0

Новый экземпляр Educatiion сохраняется в db без правильного кода пользователя для user_id или не сохраняется? – scaisEdge

ответ

0

обновление Yii::$app->user->id до 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. Проверьте, находится ли пользователь вошел в систему.
  2. Используйте Yii2 отладчик, чтобы увидеть ли мы получать значение идентификатора зарегистрированного пользователя кодом Yii::$app->user->id или Yii::$app->user->id

Используйте Yii2 отладчик, чтобы проверить, правильно ли значение идентификатора пользователя, мы получаем с помощью кода

Yii::info("User id=".Yii::$app->user->id); 

Полный код вы должны попробовать в контроллере приводится ниже

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, 
      ]); 
     } 
    } 

Теперь после запуска приложения вы можете проверить с помощью Yii2 отладчика значения, которые устанавливаются в идентификатор пользователя в различных местах.

+0

столбец user_id все еще 0 @ajith – Fyp16

+0

@ Fyp16, пожалуйста, см. Мой обновленный ответ – Ajith