laravel - Laravel 中删除记录的最佳实践? PhpStorm 抛出警告

标签 laravel phpstorm

在 PhpStorm 中编写以下代码时,它会警告“Unhandled\Exception”:

Flight::where('flight_number', $flight_number)->delete();

这几乎与 Laravel 网站上的记录完全一致。如果没有发现删除记录,我不相信这会引发错误?

这真的应该被包装在一个 try/catch 中,并带有一个空的 catch 吗,因为它实际上并不是一个错误?特别是在我的实例中,如果没有发现任何记录被删除就很好。

最佳答案

PhpStorm 警告您的原因很简单。 Illuminate\Database\Eloquent\Model::delete() 的文档 block 包含此 @throws \Exception annotation :

/**
 * Delete the model from the database.
 *
 * @return bool|null
 *
 * @throws \Exception
 */
public function delete()

PhpStorm 并不关心您如何调用 delete()flight_number 是否是表的 PK。它不可能知道这些事情。它所知道的只是上面提到的 @throws 注释,并且它试图通过提醒您这件事来发挥作用。

您可以忽略该警告,为整个项目禁用它(在“设置”->“编辑器”->“检查”->“错误处理”->“未处理的异常”中),或者您可以仅针对调用 delete( ) 方法。

对于最后一个选项,您可以输入:

/** @noinspection PhpUnhandledExceptionInspection */

delete() 调用之前单独一行。这是一个特殊的文档 block 注释,它告诉 PhpStorm 忽略其后面的语句可能引发的未处理的异常。

或者,您可以将插入符号放在 delete() 调用上,按 Alt-Enter 并选择“添加 @throws 标记”->“抑制 for 语句”从打开的上下文菜单。它会为您添加评论。

如果您确定 delete() 不会抛出任何异常(当模型未正确定义时会抛出;这不是运行时错误,而是编码错误),这是最好的方法错误;模型编码后绝不能发生)。

另一种使其静音的方法是在包含对 delete() 调用的函数的文档 block 中添加 @throws\Exception 注释。这让 PhpStorm 知道该异常没有在此级别进行处理,当然,如果您没有在调用此函数的代码中处理异常,它会警告您。

关于laravel - Laravel 中删除记录的最佳实践? PhpStorm 抛出警告,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48829468/

相关文章:

php - OctoberCMS 迁移表

php - 你能在 laravel 中创建一个范围来调用其他各种范围吗?

PhpStorm 不会解析包含使用常量

php - PhpStorm无法从Docker容器读取PHP配置

php - PhpStorm 单元测试缺少 Docker 环境变量

ide - 如何将 PHPStorm 实时模板变量定义为另一个变量的小写值?

php - 共享主机上的 Laravel - 子域

php - Laravel API 路由在 Nginx 上获取 404

PhpStorm:如何分离 PHP 和 HTML 缩进

Laravel Echo 和耳语