2016-11-07 2 views
0

Ich versuche, aktuelle Benutzer-ID in der Bildungstabelle in der Datenbank zu speichern. Die Daten von user_id sind jedoch nicht gefüllt. Das ist mein Code.So speichern Sie die aktuelle Benutzer-ID in der Datenbank (YII2)

Am Modell

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

Bei Controller

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

Wie kann ich mein Problem lösen und meinen Code beheben? Danke

+0

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

+0

Die neue Educatiion-Instanz wird in db ohne che richtigen Code für user_id gespeichert oder wird nicht gespeichert? – scaisEdge

Antwort

0

Update Yii::$app->user->id zu 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

Der Wert in Spalte user_id immer noch 0. @jithin – Fyp16

+0

aktualisiert meine Antwort pls versuchen es neuen Code – jithin

+0

Es geht auf leere Seite .. @ jithin – Fyp16

0

Sie haben zwei Dinge überprüfen

  1. Prüfen, ob der Benutzer angemeldet ist.
  2. Verwenden Yii2 Debugger, um zu sehen, ob wir den ID-Wert des durch den Code angemeldeten Benutzer erhalten Yii::$app->user->id oder Yii::$app->user->id

verwenden Yii2 Debugger, ob der richtige Benutzer-ID-Wert zu überprüfen, bieten wir Ihnen mit dem Code bekommen

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

Voll Code, den Sie in der Steuerung zu versuchen haben, ist unter

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

Jetzt, nach der Ausführung der Anwendung können Sie Yii2 Debugger die Werte unter Verwendung überprüfen, die in der Benutzer-ID an verschiedenen Stellen festgelegt werden.

+0

die Spalte user_id immer noch 0 @ajith – Fyp16

+0

@ Fyp16 siehe meine aktualisierte Antwort – Ajith

Verwandte Themen