【问题标题】:Laravel 5.6 - How to run job or event with parameters from command line?Laravel 5.6 - 如何使用命令行参数运行作业或事件?
【发布时间】:2019-10-05 10:13:08
【问题描述】:

我有一个App\Jobs\BanUser 作业,它接受参数id 通过传递他们的ID 来阻止坏用户。如果从这样的控制器调用,那将非常有效:

dispatch(new BanUser($id));

但是当我尝试从带有完整命名空间的 tinker 命令行执行此操作时,如下所示:

dispatch(new App\Jobs\BanUser('1'));

我收到此错误:

PHP 致命错误:在 Psy Shell 代码中找不到类“App/Jobs/BanUser” 第 1 行

知道如何使用从命令行传递的id 参数来完成这项工作吗?

注意:如果解决方案需要从命令行启动队列来完成这项工作,也许最好将其设置为事件?我不希望它排队,只是希望能够通过传递参数并从命令行为作业或事件执行BanUser 相应的代码来实时运行它。

【问题讨论】:

  • 试试dispatch(new \App\Jobs\BanUser('1'));
  • 与前导的结果相同\
  • 如果你输入>>> use App\Jobs\BanUser;然后>>> dispatch(new BanUser('1'));?
  • nope.. 仍然返回相同的错误。
  • 确保您的BanUser 类文件中有App\Jobs 命名空间。

标签: php laravel laravel-5 laravel-5.5 laravel-5.6


【解决方案1】:

确保您的 BanUser 类中有正确的命名空间 App\Jobs。

还要检查BanUser类文件是否放在正确的目录中。

【讨论】:

    【解决方案2】:

    试试

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

    我不确定它是否会起作用,但你可以试一试。

    【讨论】:

    • 这也有助于立即分派工作,我只是命名空间不正确,点赞!
    • 顺便说一下,这很简单:Bus::dispatch(new App\Jobs\BanUser('1'));
    猜你喜欢
    • 2017-09-07
    • 2020-04-12
    • 2013-07-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-10-07
    • 1970-01-01
    • 2018-11-12
    相关资源
    最近更新 更多