如何将参数发送到Laravel中的内核调度功能?

时间:2016-12-19 16:43:10

标签: laravel-5

我正在使用Schedule在laravel中执行cron,但是执行cron的参数的日期不是固定的。我有一个存储数据的表,我稍后将其用作cron执行的参数。问题是我不知道从写入控制器到记录的时候,我可以将该记录发送到我在内核中用于cron的查询。

这是内核中的函数:

protected function schedule(Schedule $schedule)
{
$schedule->command('inspire')
         ->hourly();

$schedule->call(function() {

    $programacion =
    DB::table('plantrabajoalerta')
    ->select(DB::raw('tareaFechaInicioPlanTrabajoAlerta, tareaHoraPlanTrabajoAlerta, tareaIntervaloPlanTrabajoAlerta, tareaDiaLaboralPlanTrabajoAlerta, tareaDiasPlanTrabajoAlerta, tareaMesesPlanTrabajoAlerta'))
    ->where('idPlanTrabajoAlerta',"=", $id)
    ->get();

    $schedule->command('log:plantrabajo')->cron('minuto hora dia * * *');

});

}

1 个答案:

答案 0 :(得分:0)

您无法通过电话向您的cron作业发送任何内容。但您可以在log:plantrabajo控制台命令中运行该代码,对吧?

所以你必须

protected function schedule(Schedule $schedule)
{
    $schedule->command('inspire')->hourly();

    $schedule->command('log:plantrabajo')->hourly();
}

在您的控制台命令上执行该查询:

<?php

namespace App\Console\Commands;

use Illuminate\Console\Command;

class PlanTrabajoCommand extends Command
{
    /**
     * The name and signature of the console command.
     *
     * @var string
     */
    protected $signature = 'log:plantrabajo';

    /**
     * The console command description.
     *
     * @var string
     */
    protected $description = 'Do whatever';

    /**
     * Execute the console command.
     *
     * @return mixed
     */
    public function handle()
    {
        $programacion =
            DB::table('plantrabajoalerta')
              ->select(DB::raw('tareaFechaInicioPlanTrabajoAlerta, tareaHoraPlanTrabajoAlerta, tareaIntervaloPlanTrabajoAlerta, tareaDiaLaboralPlanTrabajoAlerta, tareaDiasPlanTrabajoAlerta, tareaMesesPlanTrabajoAlerta'))
              ->where('idPlanTrabajoAlerta',"=", $id)
              ->get();

        foreach($programacion as $evento) {
            ...
        }
    }
}