Eloquent - 如果外键有行,则防止删除数据 - Laravel
Posted
技术标签:
【中文标题】Eloquent - 如果外键有行,则防止删除数据 - Laravel【英文标题】:Eloquent - Prevent Deletion of data if foreign key has rows - Laravel 【发布时间】:2016-05-10 23:36:09 【问题描述】:我知道我可以在迁移中限制删除外键数据。示例
$table->foreign('category_id')->references('id')->on('categories')->onDelete('restrict')->onUpdate('cascade');
如果外键中存在子项,尝试删除具有 eloquent 的类别将导致 mysql 错误。
我如何在 eloquent 中捕获这个错误并将其呈现给用户
【问题讨论】:
尝试 var_dump 你的删除方法,希望你能得到错误 我不想查看错误我想捕捉它也许..你能把雄辩的删除方法包装在try catch中吗? 是的,你可以用 try catch 换行 【参考方案1】:我终于想到了这个
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
【讨论】:
以上是关于Eloquent - 如果外键有行,则防止删除数据 - Laravel的主要内容,如果未能解决你的问题,请参考以下文章