Laravel-将变量从内核调度传递给控制器

时间:2019-06-17 15:50:36

标签: laravel

在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,而不必复制功能。

2 个答案:

答案 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();