我有以下代码: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