在Laravel中重置列的最佳方法

时间:2019-04-10 11:16:06

标签: laravel

我的用户表中有pulls列,它是整数列,我需要将该列的值重置为0每个月的第一天。

我想知道使用jobsschedules的最佳选择,为什么?

2 个答案:

答案 0 :(得分:1)

如果您需要每分钟/小时/月等执行某项操作,则需要安排任务。通常,可以使用monthly()文件中可用的monthlyOn()实例的\Illuminate\Console\Scheduling\Scheduleapp/Console/Kernel.php方法在每个月的第一天执行某些操作。

由于预定任务可能是作业,命令甚至闭包,因此您的问题答案可能是“您可以在预定任务中使用作业”。

如果您需要以某种方式在命令行中执行此任务,则适合使用命令(php artisan make:command)。如果需要在应用程序内的其他位置执行此作业,则可能需要一个作业(php artisan make:job)。

这一切都取决于您的需求。无论您把逻辑放在哪里,都需要一个预定任务https://laravel.com/docs/5.8/scheduling)。

答案 1 :(得分:1)

因此,您在问应该使用作业还是日程表?我对吗?

如果这是您的问题,那么我建议您使您对工作和时间表的概念清楚。他们不是替代品。

工作

工作可以执行工作/任务/操作。

计划

日程安排除了执行作业外什么也不做。

如何解决您的问题?

所以,做你想做的。首先,您需要创建一个工作。您可以使用php artisan make:job ResetUserPulls命令创建作业,其中ResetUserPulls是Job类的名称。现在,您需要在该工作的handle方法中进行操作。

现在,您可以将console/Kernel.php文件的schedule()方法中的作业安排为bolow:

$schedule->job(new ResetUserPulls)-> monthlyOn(1');

有关更多说明,请参见此处:https://laravel.com/docs/5.8/scheduling

最后,您必须运行无用的作业才能按以下方式运行计划:

* * * * * cd /path-to-your-project && php artisan schedule:run >> /dev/null 2>&1