我正在使用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 * * *');
});
}
答案 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) {
...
}
}
}