文件上载 - 完整性约束违规:1062密钥'PRIMARY的重复条目'1'

时间:2016-09-04 10:07:14

标签: php file-upload yii2 image-uploading yii2-basic-app

我正在尝试制作文件上传图片,结果是错误的。下面的描述错误。

  

SQLSTATE [23000]:完整性约束违规:1062密钥“PRIMARY”的重复条目“1”

此代码控制器

public function actionUpload()
        {
           $model = new \app\models\UserPhoto();
           if (\Yii::$app->request->post()) {
            $model->photo = \yii\web\UploadedFile::getInstance($model, 'photo');
            $model->user_id = \Yii::$app->user->id;
            if ($model->validate()) {
                $saveTo = 'uploads/' . $model->photo->baseName . '.' . $model->photo->extension;
                if ($model->photo->saveAs($saveTo)) {
                    $model->save(false);
                    Yii::$app->session->setFlash('success','Success uploaded !');
                }
            }
        }

        return $this->render('upload', ['model' => $model]);      
        }

1 个答案:

答案 0 :(得分:2)

您的SQL服务器说:您已在user_photo中添加了user_id = 1的另一张照片,并且您已将user_photo表配置为使用user_id作为PRIMARY KEY,表示不允许重复user_id

有效地,您构建了user_photo表,每个用户最多只能使用一张照片。要在之后更改照片,请使用UPDATE代替INSERT。一些流行的数据库有一个" upsert"语法基本上是一次插入或更新,所以如果您的数据库支持,请使用它。

如果您希望您的用户能够上传多张照片(根据文件名判断),则需要更改PRIMARY KEY,大概您希望它是FOREIGN KEY而不是仅确保有效user_id可能与照片相关联。