$model->save()用此方法新建,更新数据都失败,打印错误是array(); [ 2.0 版本 ]
public function actionUpdate($id)
{
$model = $this->findModel($id);
if ($model->load(Yii::$app->request->post()) && $model->save()) {
return $this->redirect(['view', 'id' => $model->id]);
} else {
// print_r($model->getErrors());
// exit;
return $this->render('update', [
'model' => $model,
]);
}
}
数据库的读取没有问题。就是新建,更新不行。$model->load(Yii::$app->request->post()) 这个条件没毛病。用navicate可以手动更改数据库。我这个博客就是魏曦老师的blogdemo2他在视频里就没有报错,不知道大家有没有听过他的视频。
最佳答案
-
$model->load(Yii::$app->request->post())
这里没有成功载入共 12 条回复public function rules() { return [ [['title', 'content', 'status', 'author_id'], 'required'], [['content', 'tags'], 'string'], [['status', 'create_time', 'update_time', 'author_id'], 'integer'], [['title'], 'string', 'max' => 128], [['author_id'], 'exist', 'skipOnError' => true, 'targetClass' => Adminuser::className(), 'targetAttribute' => ['author_id' => 'id']], [['status'], 'exist', 'skipOnError' => true, 'targetClass' => Poststatus::className(), 'targetAttribute' => ['status' => 'id']], ]; }
和数据库比对了验证规则没发现错误,刚开始我也觉得是这个原因,现在又不知所措了。应该怎么改呢
@wq135751675
if ($model->load(Yii::$app->request->post())){// return $this->redirect(['view', 'id' => $model->id]); var_dump($model); exit; }else{ print_r($model->getErrors()); exit; }
这样确实能打印出来$model,和我修改的信息一样。接下来呢,谢谢你,亲
@wq135751675
print_r($model->getErrors());返回空数组array();让这个为难一天啦。还没找到解决方法呢@wq135751675
想哭,rules规则为空还是不能存入数据库@wq135751675
谢谢你,找到问题所在啦!!post类中,beforeSave($insert)代码有问题少了个return true;所以还没到save就出问题了呢。public function beforeSave($insert) { if(parent::beforeSave($insert)) { if($insert) { $this->create_time = time(); $this->update_time = time(); } else { $this->update_time = time(); } return true; } else { return false; } }
其他 1 个回答
RonZone 北京
注册时间:2016-11-27
最后登录:2019-06-13
在线时长:5小时19分
最后登录:2019-06-13
在线时长:5小时19分
- 粉丝0
- 金钱65
- 威望0
- 积分115