【问题标题】:Laravel create new info about errorsLaravel 创建有关错误的新信息
【发布时间】:2016-07-05 20:38:34
【问题描述】:

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

SQLSTATE[23000]:违反完整性约束:1451 无法删除或 更新父行:外键约束失败 (magazyn.products, 约束products_article_id_foreign 外键 (article_id) 引用 articles (id)) (SQL: 删除 来自articles,其中id = 23)

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

【问题讨论】:

    标签: php laravel relational-database


    【解决方案1】:

    通过 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!';
       }
    }
    

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

    【讨论】:

      猜你喜欢
      • 2012-04-18
      • 1970-01-01
      • 2018-08-30
      • 1970-01-01
      • 2018-02-09
      • 1970-01-01
      • 2018-09-12
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多