Laravel 5.6 - Как запустить задание или событие с параметрами из командной строки?

У меня есть задание 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 из командной строки для задания или события.

попробуй dispatch(new \App\Jobs\BanUser('1'));

porloscerros Ψ 18.05.2019 10:34

тот же результат с ведущим \

Wonka 18.05.2019 10:37

а если набрать >>> use App\Jobs\BanUser; а потом >>> dispatch(new BanUser('1'));?

porloscerros Ψ 18.05.2019 10:45

нет.. по-прежнему возвращает ту же ошибку.

Wonka 18.05.2019 10:50

Убедитесь, что у вас есть пространство имен App\Jobs в файле класса BanUser.

cheack 18.05.2019 11:02

@podvzbzdnul вы правы, моя ошибка, он был вложен в дополнительную папку, которая не входила в пространство имен. Если вы опубликуете это как ответ, я приму это. Большое спасибо за это простое напоминание.

Wonka 18.05.2019 21:12
Стоит ли изучать PHP в 2026-2027 годах?
Стоит ли изучать PHP в 2026-2027 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Symfony Station Communiqué - 7 июля 2023 г
Symfony Station Communiqué - 7 июля 2023 г
Это коммюнике первоначально появилось на Symfony Station .
Оживление вашего приложения Laravel: Понимание режима обслуживания
Оживление вашего приложения Laravel: Понимание режима обслуживания
Здравствуйте, разработчики! В сегодняшней статье мы рассмотрим важный аспект управления приложениями, который часто упускается из виду в суете...
Установка и настройка Nginx и PHP на Ubuntu-сервере
Установка и настройка Nginx и PHP на Ubuntu-сервере
В этот раз я сделаю руководство по установке и настройке nginx и php на Ubuntu OS.
Коллекции в Laravel более простым способом
Коллекции в Laravel более простым способом
Привет, читатели, сегодня мы узнаем о коллекциях. В Laravel коллекции - это способ манипулировать массивами и играть с массивами данных. Благодаря...
Как установить PHP на Mac
Как установить PHP на Mac
PHP - это популярный язык программирования, который используется для разработки веб-приложений. Если вы используете Mac и хотите разрабатывать...
0
6
1 265
2
Перейти к ответу Данный вопрос помечен как решенный

Ответы 2

пытаться

app('Illuminate\Bus\Dispatcher')->dispatch(new App\Jobs\BanUser('1'));

Я не уверен, что это сработает, но вы можете попробовать.

Это также помогло сразу же отправить задание, у меня просто было неправильное пространство имен, проголосовал!

Wonka 18.05.2019 22:36

Кстати, для краткости это работает: Bus::dispatch(new App\Jobs\BanUser('1'));

Wonka 19.05.2019 00:03
Ответ принят как подходящий

Убедитесь, что у вас есть правильное пространство имен App\Jobs в вашем BanUser классе.

Также проверьте, что файл класса BanUser находится в правильном каталоге.

Другие вопросы по теме