我正在使用Laravel 5.2' task scheduler。我需要能够将两个选项传递给调度程序,但我不确定如何执行此操作。
以下是我Kernel.php
中的内容:
protected function schedule(Schedule $schedule)
{
$schedule->command('simple_cron --first_option=10')
->everyMinute();
}
这是我的simple_cron
命令:
<?php
namespace App\Console\Commands;
use Illuminate\Console\Command;
use App\Models\Article;
class SimpleCron extends Command
{
/**
* The name and signature of the console command.
*
* @var string
*/
protected $signature = 'simple_cron';
/**
* The console command description.
*
* @var string
*/
protected $description = '';
/**
* Execute the console command.
*
* @return mixed
*/
public function handle()
{
$firstOption = $this->option('first_option');
}
}
但这给了我错误:
The "--first_option" option does not exist.
我做错了什么?
答案 0 :(得分:0)
根据offical documentation,第一件事是您的签名需要有一个/两个占位符用于参数:
protected $signature = 'simple_cron {p1} {p2} {--firstoption=5}';
我们在此处为选项5
设置了默认值firstoption
。如果您不想要默认值,请写下{--firstoption=}
要在handle
方法中获取这些参数,您可以这样做:
/**
* Execute the console command.
*
* @return mixed
*/
public function handle()
{
$p1 = $this->argument('p1'); // should be 10
$p2 = $this->argument('p2'); // should be 20
$option1 = $this->option('firstoption'); // should be 99
//
}
然后您应该可以这样调用它:
$schedule->command('simple_cron 10 20 --firstoption=99')->daily();