在laravel中使用Eloquent的find方法时如何对未找到的记录作出反应?

时间:2014-10-25 07:00:29

标签: php laravel eloquent

由于我在浏览网页时无法找到有关此内容的任何信息,因此我想回答当Eloquent在您的表格中找不到指定记录时您如何应对这种情况。

这样做的一个例子就是说,用户正在尝试编辑一个不存在ID的页面,所以他试图去somesite.com/pages/edit/1;但是,ID为1的页面不存在。

我的问题是,您是否使用显示通用错误消息的内置findOrFail()方法,或者更好的解决方案是始终检查指定的记录是否存在,如果没有则抛出异常?< / p>

提前致谢。

2 个答案:

答案 0 :(得分:2)

更好的选择是使用findOrFail(如果通过id查找)或firstOrFail(如果不是通过id查找)。这样,Laravel会自动抛出异常,您可以进行重定向或显示404页面。

但是,如果您想进行自定义重定向(例如,在一种情况下重定向到主页,在其他情况下,例如某些页面页面),您可以捕获每个控制器中的异常,然后进行重定向,例如:

try {
   $record = Page::findOrFail(1);
}
catch (ModelNotFoundException $e) {
   // here you can make redirection, log or anything you want
}

答案 1 :(得分:0)

如果数据丢失,

findOrFail将显示404页面。所以这是一种方法