首页 > 解决方案 > 处理特定列上的唯一键错误

问题描述

我正在尝试捕获特定列上的唯一键错误。

假设有一个包含 3 列的表(id, name, value)

所有 3 列都是唯一的(不是复合的)。

当我进行插入并失败时,我想重试插入,但前提是它是因为value列。

例如,如果因为value列而插入失败,我想重试插入,但如果是因为name列,我不想重试插入。

我如何知道错误发生在哪一列?

到目前为止我发现的是使用错误代码,但这并没有告诉我唯一错误发生在哪一列。

try {
   $foo = new Foo(['foo' => 42, 'bar' => 1]);
   $foo->save();
} catch (\Exception $e) { // It's actually a QueryException but this works too
   if ($e->getCode() == 23000) {
       // Deal with duplicate key error  
   }
}

我应该使用正则表达式来分析消息还是有更好的方法?

标签: phplaravel

解决方案


推荐阅读