我正在尝试在Laravel中设置一个命令,该命令应该每天18:30运行。
我在控制器中有一个函数,希望运行(这是放置仅应从命令行运行的函数的正确位置吗?)
ReportController.php
:
public function process($reportName)
{
return("Function process has run correctly. Report: ".$reportName." ");
}
我已经创建了一个命令文件:
ProcessReports.php
namespace App\Console\Commands;
use App\Http\Controllers\ReportController;
use Illuminate\Console\Command;
class ProcessReports extends Command
{
protected $signature = 'report:process {reportName}';
protected $description = 'Process reports from FTP server';
public function __construct()
{
parent::__construct();
}
public function handle()
{
//
$ReportController = new ReportController();
$ReportController->process($reportName);
}
}
此外,我在Kernel.php
中注册了命令:
Kernel.php
:
protected $commands = [
'App\Console\Commands\ProcessReports',
];
protected function schedule(Schedule $schedule)
{
$schedule->command('report:process MyReport')
->dailyAt('18:30');
}
然后,我尝试运行以下命令:$ php artisan report:process MyReport
。但这是不可能的。它给了我这个错误:
未定义的变量: reportName
有人可以指导我如何创建可以每天运行我的函数的命令吗?
答案 0 :(得分:1)
您需要首先获取参数,将handle()
方法更改为:
public function handle()
{
//
$reportName = $this->argument('reportName');
$ReportController = new ReportController();
$ReportController->process($reportName);
}