2016-10-16 16:42:11 5666次浏览 2条回答 1 悬赏 10 金钱

如下所示代码:

// 获取user的所有字段
$model = User::findOne(Yii::$app->getUser()->getIdentity()->getId());
$model->head_image = UploadedFile::getInstance($model, 'head_image');
$file = Yii::$app->params['uploadImagePath'] . Yii::$app->security->generateRandomString(64) .  '.' . $model->head_image->extension;
// 保存文件
$model->head_image->saveAs($file);
$model->head_image = $file;
if ($model->update()){
     return '头像更新成功!';
}
return '文件保存成功!' . Json::encode($model->errors);      

这时$model->update()成功,数据库数据更新成功。

但是当 _$model = User::find()->select('username,head_image')->where(['userid' => Yii::$app->getUser()->getIdentity()->getId()])->one();_ 这样获取数据时,_$model->update()_失败,且数据库数据没有更新。

我又使用_$model = User::find()->select('*')->where(['userid' => Yii::$app->getUser()->getIdentity()->getId()])->one();_获取数据时,_$model->update()_也是成功的,且数据库数据更新成功。

我又将两种获取得到的数据模型打印出来做了比较,除了数据条数不同内容都是一样的。

劳烦朋友指教。

最佳答案

  • jackiegao 发布于 2016-10-16 23:41 举报

    select('id,username,headimage')试试

    1 条回复
    回复于 2016-10-17 10:59 回复

    正解,可以了,看来是更新时条件的问题,理解不够深,多谢提醒

您需要登录后才可以回答。登录 | 立即注册
jianghaifm
职场新人

jianghaifm

注册时间:2015-12-26
最后登录:2017-05-25
在线时长:4小时17分
  • 粉丝1
  • 金钱50
  • 威望0
  • 积分90

热门问题