为什么Laravel命令中的自定义构造函数会导致"Invalid argument supplied for foreach"?



我创建了一个命令,如下所示:

<?php
use IlluminateConsoleCommand;
use SymfonyComponentConsoleInputInputOption;
use SymfonyComponentConsoleInputInputArgument;
class SchedulesCommand extends Command {
    protected $name = "mod:check";
    protected $description = "Checks the Database for any upcoming schedules.";
    protected $mod;
    public function __construct (Model $mod){
        $this->mod = $mod;
    }
    public function fire(){
        $this->line('Checking the database');
        $this->mod->f1 = 1;
        $this->mod->f2 = "test";
        $this->mod->f3 = 'Command';
        $this->mod->save();
    }
?>

我得到以下错误-不知道为什么-

{"error":{"type":"ErrorException","message":"Invalid argument supplied for foreach()","file":"/home/test/Documents/account1/PHP Scripts/project/vendor/symfony/console/Symfony/Component/Console/Application.php","line":409}}

有人能告诉我可能出了什么问题吗?

这是我的artisan.php文件:

 $mod = new Model;
 $artisan->add(new SchedulesCommand($mod));

创建Laravel命令时,应始终调用父构造函数。

在构造函数中,添加parent::__construct()作为第一行,如下所示:

public function __construct (Model $mod)
{
    parent::__construct();
    $this->mod = $mod;
}

请记住,调用父构造函数可以让Laravel在控制台命令上配置名称、描述和参数,让我们的工作更轻松

相关内容

最新更新