如何将当前user_id保存到数据库(YII2)
问题描述:
我尝试将当前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,
]);
}
}
我怎样才能解决我的问题和修复我的代码?谢谢
答
更新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,
]);
}
答
你必须检查两件事情
用户- 检查是否登录。
- 使用Yii2调试器,看看我们是否是由代码中获得价值的登录用户的ID
Yii::$app->user->id
或Yii::$app->user->id
使用Yii2调试器来检查是否值正确的用户ID,我们通过使用代码
越来越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调试器,在用户ID设置在不同的地方的价值观。
尝试Yii :: $ app-> user-> user_id –
新的Educatiion实例保存在数据库中,但没有为user_id输入正确的代码或者未保存? – scaisEdge