laravel 4.2 artisan command:name 带参数

laravel 4.2 artisan command:name with arguments

我创建了一个名为 sendUnreadNotifications 的 artisan 命令,如果用户有未读通知,它会触发系统向用户发送电子邮件。最终这将是 运行 通过 cron 作业,用户可以每小时更新或每天更新。

出于这个原因,我想用我的命令发送一个参数,像这样,

php artisan command:name sendUnreadNotifications H --env=local

然而 运行宁此,我收到以下错误,

[RuntimeException]
Too many arguments.

我的代码,看起来像这样,

<?php

use Illuminate\Console\Command;
use Symfony\Component\Console\Input\InputOption;
use Symfony\Component\Console\Input\InputArgument;

class sendUnreadNotifications extends Command {

/**
 * The console command name.
 *
 * @var string
 */
protected $name = '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 fire()
{
    $request = Request::create('api/notifications/send/unread', 'GET', array($this->getArguments()));
    Route::dispatch($request)->getContent();
}

/**
 * Get the console command arguments.
 *
 * @return array
 */
protected function getArguments()
{
    return array(
        array('frequency', InputArgument::OPTIONAL, 'How often should the email be sent', 'H'),
    );
}

/**
 * Get the console command options.
 *
 * @return array
 */
protected function getOptions()
{
    return array(
        array('example', null, InputOption::VALUE_OPTIONAL, 'An example option.', null),
    );
}

}

我不明白为什么我会收到太多参数异常?

您只设置了一个参数,frequency

protected function getArguments()

{
    return array(
        array('frequency', InputArgument::OPTIONAL, 'How often should the email be sent', 'H'),
    );
}

所以

php artisan command:name sendUnreadNotifications H --env=local

这里的H是论点太多了。您应该将命令的名称更改为您想要执行的操作,顺便说一句,命令名称必须是唯一的...

改变这个:

protected $name = 'command:name';

protected $name = 'send:unreadNotifications';

和运行你的工作

php artisan send:UnreadNotifications H

它会起作用。