Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/laravel/11.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Database Laravel在数据库上执行计划作业_Database_Laravel_Scheduled Tasks_Pipeline - Fatal编程技术网

Database Laravel在数据库上执行计划作业

Database Laravel在数据库上执行计划作业,database,laravel,scheduled-tasks,pipeline,Database,Laravel,Scheduled Tasks,Pipeline,这在某种程度上是我当前laravel side项目的设计问题 因此,目前我有一个表,它在一列中存储状态值,以及更改状态的日期。否,我想在存储日期为当前日期时自动更改该状态值。由于该表将获得更多关于时间的行,因此我必须以重复的方式执行更改过程。此外,我还想对数据执行一些约束检查 我确信laravel有能力做到这一点,但如何做到呢?laravel有命令和调度程序,将这两个功能结合在一起可以提供您想要的功能 在Console\Commands文件夹中使用所需逻辑创建命令。你的问题是稀疏的,所以大部分是

这在某种程度上是我当前laravel side项目的设计问题

因此,目前我有一个表,它在一列中存储状态值,以及更改状态的日期。否,我想在存储日期为当前日期时自动更改该状态值。由于该表将获得更多关于时间的行,因此我必须以重复的方式执行更改过程。此外,我还想对数据执行一些约束检查


我确信laravel有能力做到这一点,但如何做到呢?

laravel
有命令和调度程序,将这两个功能结合在一起可以提供您想要的功能

Console\Commands
文件夹中使用所需逻辑创建命令。你的问题是稀疏的,所以大部分是伪逻辑,你可以根据你的情况调整它

namespace App\Console\Commands;

class StatusUpdater extends Command
{

    protected $signature = 'update:status';

    protected $description = 'Update status on your model';

    public function handle()
    {
        $models = YourModel::whereDate('date', now())->get();

        $models->each(function (YourModel $model) {
            if ($model->status === 'wrong') {
                $model->status = 'new';
                $model->save();
            }
        });
    }
}
要使此命令每天运行,可以使用计划程序计划给定的命令。转到
Commands\Kernel.php
可以找到schedule()方法

要安排工作,必须将以下命令添加到服务器上的
cronjob
。这在中进行了描述

use App\Commands\StatusUpdater;
use Illuminate\Console\Scheduling\Schedule;

    class Kernel extends ConsoleKernel
    {
        protected function schedule(Schedule $schedule)
        {
            $schedule->command(StatusUpdater::class)->daily();
        }
    }
}
* * * * * cd /path-to-your-project && php artisan schedule:run >> /dev/null 2>&1