2016-09-04 144 views
1

我想使文件上傳圖像和結果是錯誤的。描述錯誤在下面。文件上傳 - 完整性約束違規:1062重複鍵'1'鍵PRIMARY

SQLSTATE [23000]:完整性約束違規:1062重複條目 '1' 鍵 '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]);  
 
     }

+0

您已將'user_id'設置爲主鍵,並且這必須是唯一的。 – Bizley

+0

請考慮在代碼中包含代碼作爲實際文本,而不是屏幕截圖。它使其他人更容易從您的問題中讀取和複製代碼。 – Sherif

回答

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可與照片相關聯。

相關問題