У меня есть задание App\Jobs\BanUser, которое принимает параметр id, чтобы заблокировать плохого пользователя, передав его идентификатор. Это отлично работает, если вызывается из контроллера следующим образом:
dispatch(new BanUser($id));
Но когда я пытаюсь сделать это из командной строки tinker с полным пространством имен, например:
dispatch(new App\Jobs\BanUser('1'));
Я получаю эту ошибку:
PHP Fatal error: Class 'App/Jobs/BanUser' not found in Psy Shell code on line 1
Есть идеи, как выполнить это задание с переданным параметром id из командной строки?
ПРИМЕЧАНИЕ. Если решение требует запуска очереди из командной строки только для этого задания, может быть, лучше установить его как событие? Я не хочу, чтобы он стоял в очереди, просто хочу иметь возможность запускать его в режиме реального времени, передавая параметр и выполняя соответствующий код BanUser из командной строки для задания или события.
тот же результат с ведущим \
а если набрать >>> use App\Jobs\BanUser; а потом >>> dispatch(new BanUser('1'));?
нет.. по-прежнему возвращает ту же ошибку.
Убедитесь, что у вас есть пространство имен App\Jobs в файле класса BanUser.
@podvzbzdnul вы правы, моя ошибка, он был вложен в дополнительную папку, которая не входила в пространство имен. Если вы опубликуете это как ответ, я приму это. Большое спасибо за это простое напоминание.






пытаться
app('Illuminate\Bus\Dispatcher')->dispatch(new App\Jobs\BanUser('1'));
Я не уверен, что это сработает, но вы можете попробовать.
Это также помогло сразу же отправить задание, у меня просто было неправильное пространство имен, проголосовал!
Кстати, для краткости это работает: Bus::dispatch(new App\Jobs\BanUser('1'));
Убедитесь, что у вас есть правильное пространство имен App\Jobs в вашем BanUser классе.
Также проверьте, что файл класса BanUser находится в правильном каталоге.
попробуй
dispatch(new \App\Jobs\BanUser('1'));