我正在尝试使文件上传图像,但结果错误。描述错误如下。
SQLSTATE[23000]: Integrity constraint violation: 1062 Duplicate entry '1' for key 'PRIMARY'
此代码 Controller
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]);
}
最佳答案
您的 SQL 服务器显示:您的 user_photo
中已有另一张照片,其中 user_id
= 1
,并且您已配置您的 user_photo
表使用 user_id
作为主键,这意味着不允许重复的 user_id
。
实际上,您已经以每个用户最多可以使用一张照片的方式构建了 user_photo
表。要随后更改照片,请使用 UPDATE
而不是 INSERT
。一些流行的数据库具有“upsert”语法,基本上可以一次性执行插入或更新操作,因此如果您的数据库支持该语法,请使用它。
如果您希望用户能够上传多张照片(根据文件名判断),您需要更改您的主键
,大概您希望它成为外键
而是确保只有有效的 user_id
可以与照片关联。
关于php - 文件上传 - 违反完整性约束 : 1062 Duplicate entry '1' for key 'PRIMARY,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39315780/