未找到 Laravel 5.8 自定义命令

Posted

技术标签:

【中文标题】未找到 Laravel 5.8 自定义命令【英文标题】:Laravel 5.8 custom command not found 【发布时间】:2020-02-21 21:19:19 【问题描述】:

我使用 artisan 创建了一个自定义命令:

php artisan make:command resetNegotiations

比删除缓存:

php 工匠缓存:清除

但是如果我尝试运行:php artisan ResetNegotiations我得到了错误:

命令“ResetNegotiations”未定义。

ResetNegotiations.php文件存在于app/Console/Commands

我发现了类似的问题: - Command is not defined exception 但它没有修复我的问题。

我已在 app/Console/Kernel.php 中将内核更新为https://laravel.com/docs/5.8/artisan#registering-commands,但是……什么也没有。缓存重建后也出现同样的错误。

kernel.php

 ....
 protected $commands = [
    Commands\ResetNegotiations::class,
    //
];

我错过了什么?

这是命令:

<?php
  namespace App\Console\Commands;
  use Illuminate\Console\Command;

   class resetNegotiations extends Command
/**
 * The name and signature of the console command.
 *
 * @var string
 */
protected $signature = 'command:name';

/**
 * The console command description.
 *
 * @var string
 */
protected $description = 'Command description';

/**
 * Create a new command instance.
 *
 * @return void
 */
public function __construct()

    parent::__construct();


/**
 * Execute the console command.
 *
 * @return mixed
 */
public function handle()

    //

    mail("######@#####.it", "Scheduledartsan ", "Command test");


【问题讨论】:

您应该使用驼峰式,否则文件将无法正确自动加载。所以将类重命名为ResetNegotiations,将文件重命名为ResetNegotiations.php 谢谢。我已经使用大写更新了类名、类文件和内核。刷新了缓存,但命令工匠列表显示了除我之外的所有命令。 【参考方案1】:

protected $signature = 'command:name'; 是您在 artisan 中用来调用命令的。如果您想使用它,只需将签名更改为protected $signature = 'resetNegotiations';。您发布的工匠命令应该在更改后工作。

【讨论】:

以上是关于未找到 Laravel 5.8 自定义命令的主要内容,如果未能解决你的问题,请参考以下文章

未找到 Laravel 5.2 自定义包路径

如何在 laravel 5.8 或 6 中制作通用自定义包进行身份验证。*

未找到 Laravel 自定义特征

laravel 自定义命令未列出

使用 Laravel 5.2 的 PHPUnit 未找到自定义异常

Laravel - 在部署自定义 Artisan 命令时未部署 composer.json 文件