我正在尝试制作文件上传图片,结果是错误的。下面的描述错误。
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]);
}
答案 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
可能与照片相关联。