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

时间:2019-07-16 13:21:50

标签: laravel-5.7 laravel-events

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

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

问题: CheckProductValidity引发计划任务的异常。如何在侦听器中设置异常,以允许在调度程序完成后检索模型Product数据。

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

1 个答案:

答案 0 :(得分:0)

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

// 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的结果。