Laravel - 为模型侦听器中的计划事件编写异常

Laravel - writing exception for schedule event in model listener

我有一个模型 Product 触发 retrieved 事件 ProductRetrieved 和一个侦听器 CheckProductValidity 根据 API 路径抛出异常( if-else 条件)。

此外,我在 Console\Kernal.php 中实施了一个每天 00:00 小时运行的更新查询。

问题: CheckProductValidity定时任务抛出异常。如何在侦听器中设置异常以允许在调度程序完成时检索模型 Product 数据。

可能的解决方案: 使用 unsetEventDispatchersetEventDispatcher 但有时此更新查询可能比平时花费更多时间。此外,cron 还会发送通知和处理作业(全部取决于 Product),因此可能会导致问题。

不是真正的解决方案,但我就是这样解决的。

// fix to catch if artisan schedule:run has intiated this check;
$parameters = app('request')->server->get('argv');

$allowed_commands = ['schedule:run', 'migrate:refresh', 'db:seed', 'queue:work'];

if ($parameters[0]==='artisan'
    && in_array($parameters[1], $allowed_commands))
    return true;

在侦听器中,我添加了这段代码,它会检查请求是 artisan 命令的结果还是 route.

的结果