首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Laravel在数据库上执行预定的工作

Laravel在数据库上执行预定的工作
EN

Stack Overflow用户
提问于 2021-03-15 18:29:44
回答 1查看 787关注 0票数 1

这在一定程度上是我当前的laravel侧项目的设计问题。

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

我相信拉拉能做到这一点,但是怎么做到的呢?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2021-03-15 19:07:25

Laravel有命令和调度程序,将这两者结合在一起就能得到您想要的结果。

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

代码语言:javascript
复制
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()方法。

代码语言:javascript
复制
use App\Commands\StatusUpdater;
use Illuminate\Console\Scheduling\Schedule;

    class Kernel extends ConsoleKernel
    {
        protected function schedule(Schedule $schedule)
        {
            $schedule->command(StatusUpdater::class)->daily();
        }
    }
}

为了调度工作,您必须将以下命令添加到服务器上的cronjob中。这是在Laravel文件中描述的。

代码语言:javascript
复制
* * * * * cd /path-to-your-project && php artisan schedule:run >> /dev/null 2>&1
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/66643616

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档