Laravel创建有关错误的新信息

时间:2016-07-05 20:38:35

标签: php laravel relational-database

在我的项目中,我有两个关联的表(类别和产品)。当我尝试删除分配给产品的类别时,Laravel返回:

  

SQLSTATE [23000]:完整性约束违规:1451无法删除或   更新父行:外键约束失败   (magazynproducts,CONSTRAINT products_article_id_foreign   FOREIGN KEY(article_id)REFERENCES articlesid))(SQL:delete   来自articles id = 23)

我知道为什么laravel会返回此错误,但我有一个问题: 如何创建信息示例:“您无法删除此类别,因为它包含产品

1 个答案:

答案 0 :(得分:2)

通过Eloquent完成查询时的错误应返回QueryException个对象。因此,您可以捕获它,然后解析它以显示消息。当然,第二部分是困难的部分,因为错误的变化太多,但您可能能够检测到常见的查询问题。

例如:

try {
    // Run query that might fail here
} catch(QueryException $e) {
   if (stristr($e->getMessage(), 'Integrity constraint violation') {
       return 'Record cannot be deleted or updated because it has related entities!';
   }
}

您应该知道原始查询的上下文(无论是更新还是删除),因此您也可以根据该信息优化错误消息。