我有以下代碼:Yii2:自定義錯誤消息時完整性約束違規
try {
if ($model->save()) {
return $this->redirect(['view', 'id' => $model->id]);
}
} catch (\Exception $e) {
$model->addError(null, $e->getMessage());
return $this->render('create', [
'model' => $model,
]);
}
但是當我做一個插入與重複鍵的數據庫,顯示的錯誤是不是很友好。
SQLSTATE [23000]:完整性約束違規:1062重複條目 '1-17' 的執行關鍵 '主要' 的SQL是:INSERT_QUERY
如何自定義的消息時,錯誤是由於重複鍵?
我想補充一點'完整性約束violation's可以在其他情況下發生的,以及(大部分是無效的插入/更新/刪除外鍵字段)。這個例子只是防止一個場景(重複PK)。正確的方法是確定這些發生的位置,並防止應用程序試圖通過對用戶有意義的驗證規則和錯誤消息來運行它們,而不是定製異常消息 – csminb
您能否解釋您的評論?你可以編輯你的答案:)謝謝! – Giest
@Giest我想說你的重點應該是防止[違反約束](https://dev.mysql.com/doc/ndbapi/en/ndb-error-codes-constraint-violation.html)使用更嚴格的驗證規則。我希望編輯的答案可以幫助你。歡呼 – csminb