我已经通过将其添加到EventServiceProvider
protected $subscribe = [
MyListener::class
];
侦听器(MyListener
)具有subscribe
函数,用于订阅侦听器要侦听的事件-它可以正常运行。
现在,我正在尝试添加检查以限制应监听的事件。像
public function subscribe($events)
{
$config = ConfigService::getUserConfig();
if ($config->shouldSubscribe) {
$events->listen(.....);
}
}
但是添加此逻辑后,我遇到了一些问题。
似乎在运行composer install
时它会执行subscription方法。
这会导致问题,因为在运行composer install
时没有活动的会话-我遇到了SQL错误-无法找到要在其中搜索配置的数据库-随后出现此错误< / p>
脚本@php artisan软件包:发现处理错误代码为1的返回的autoload-dump事件
如何在监听器中有条件地订阅某些事件?
答案 0 :(得分:1)
这不是您回答的确切答案,但它应适合您的情况。您可以使用Application :: runningInConsole()函数检测代码是否正在从控制台运行。
示例:
public function subscribe($events)
{
// Running from cli script, abort ship!
if(app()->runningInConsole())
{
return;
}
$config = ConfigService::getUserConfig();
if ($config->shouldSubscribe) {
$events->listen(.....);
}
}