在Kernel.php中使用laravel schedule命令可以将变量传递给控制器吗?
Kernel.php
$schedule->call('App\Http\Controllers\TestController@fetchInvoices(20)')->everyMinute();
$schedule->call('App\Http\Controllers\TestController@fetchInvoices(100)')->everyFiveMinutes();
TestController.php
public function fetchInvoices($id){
dd($id);
}
我的目标是在不同的时间运行2个cron,而不必复制功能。
答案 0 :(得分:1)
我不是Laravel专家,但我认为在这里使用Controller不是正确的方法。
尝试将fetchInvoices方法构建到带有选项的Artisan命令中。 https://laravel.com/docs/5.8/artisan#writing-commands
Artisan命令可以轻松安排。 https://laravel.com/docs/5.8/scheduling#scheduling-artisan-commands
答案 1 :(得分:1)
Schedule::call()
函数看起来可以接受参数:
/**
* Add a new callback event to the schedule.
*
* @param string|callable $callback
* @param array $parameters
* @return \Illuminate\Console\Scheduling\CallbackEvent
*/
public function call($callback, array $parameters = [])
{
$this->events[] = $event = new CallbackEvent(
$this->eventMutex, $callback, $parameters
);
return $event;
}
所以尝试:
$schedule->call('App\Http\Controllers\TestController@fetchInvoices', array('10'))->everyMinute();