文件上传 - 违反完整性约束:1062 键“PRIMARY”的重复条目“1”
File Upload - Integrity constraint violation: 1062 Duplicate entry '1' for key 'PRIMARY
我正在尝试制作文件上传图片,但结果出错。描述错误如下。
SQLSTATE[23000]: Integrity constraint violation: 1062 Duplicate entry '1' for key 'PRIMARY'
这个代码控制器
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
table 使用 user_id
作为 PRIMARY KEY,这意味着不允许重复 user_id
。
实际上,您已经按照每个用户最多可以使用一张照片的方式构建了 user_photo
table。之后要更改照片,请使用 UPDATE
而不是 INSERT
。一些流行的数据库有一个 "upsert" 语法,它基本上一次完成插入或更新,所以如果你的数据库支持,就使用它。
如果您希望您的用户能够上传多张照片(根据文件名判断),您需要更改 PRIMARY KEY
,大概您希望它是 FOREIGN KEY
而不是确保只有有效的 user_id
可以与照片关联。
我正在尝试制作文件上传图片,但结果出错。描述错误如下。
SQLSTATE[23000]: Integrity constraint violation: 1062 Duplicate entry '1' for key 'PRIMARY'
这个代码控制器
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
table 使用 user_id
作为 PRIMARY KEY,这意味着不允许重复 user_id
。
实际上,您已经按照每个用户最多可以使用一张照片的方式构建了 user_photo
table。之后要更改照片,请使用 UPDATE
而不是 INSERT
。一些流行的数据库有一个 "upsert" 语法,它基本上一次完成插入或更新,所以如果你的数据库支持,就使用它。
如果您希望您的用户能够上传多张照片(根据文件名判断),您需要更改 PRIMARY KEY
,大概您希望它是 FOREIGN KEY
而不是确保只有有效的 user_id
可以与照片关联。