mysql - Eloquent - 如果外键有行,则防止删除数据 - Laravel

标签 mysql laravel eloquent foreign-keys

我知道我可以在迁移中限制删除外键数据。示例

$table->foreign('category_id')->references('id')->on('categories')->onDelete('restrict')->onUpdate('cascade');

如果外键中的子项存在,则尝试使用 eloquent 删除类别将导致 mysql 错误。

我如何以 Eloquent 方式捕获此错误并将其呈现给用户

最佳答案

我终于想到了这个

try {
     $category->delete();
    } 
catch (\Illuminate\Database\QueryException $e) {

        if($e->getCode() == "23000"){ //23000 is sql code for integrity constraint violation
            // return error to user here
        }
    }

关于mysql - Eloquent - 如果外键有行,则防止删除数据 - Laravel,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35148816/

相关文章:

mysql - 将复杂的 mysql 查询添加到 Yii2 中的搜索模型

mysql - 按最接近指定日期的行排序,但将过去的记录放在结果集的末尾

php - 将 Laravel 查询结果转换为类

mysql - 有没有办法使用 Laravel 的 ELOQUENT ORM 将结果设为 "limit"?

laravel - 使用 $append 属性进行 Eloquent Eager Loading

php - 如何删除wordpress数据库中的现有表

php - Laravel 与 Faker 做种

php - Laravel 会自动关闭数据库连接吗?

Laravel 请求验证消息格式化

laravel - 如何在 Cpanel 的子域 lumen/laravel 上安装免费 SSL?