gpt4 book ai didi

php - Laravel 自动删除过去日期的表记录

转载 作者:可可西里 更新时间:2023-11-01 07:55:46 26 4
gpt4 key购买 nike

我有一个从 API 获取一些信息的数据库表。

列是

id     datetime     name
10011 2018-01-26 something

我正在寻找的是删除这个条目,因为它的日期现在已经过去了。

有没有一种方法可以在 Laravel 中指定一个 cron 作业,它会自动删除包含 datetime 条目且在过去的列?

最佳答案

您可以使用 2 个组件实现此目的:一个 artisan console commandtask scheduling .

  1. 创建删除旧项目的控制台命令
  2. 安排命令每分钟运行一次

首先我们将创建控制台命令:

  1. 使用 php artisan make:command TruncateOldItems 构建一个新的控制台命令
  2. 在你的新命令中定义$signature作为items:truncate并在 $description 中包含描述
  3. 来自 handle方法选择所有符合条件的项目,然后运行delete()在他们身上,例如:

    public function handle()
    {
    Item::where('datetime', '<', Carbon::now())->each(function ($item) {
    $item->delete();
    });
    }

然后我们将安排命令:

  1. 打开App\Console\Kernel.php
  2. 来自 schedule方法,安排你的命令:

    $schedule->command('items:truncate')->everyMinute();
  3. Start the scheduler通过添加一个 cron 条目:

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

注意:您需要换出 Item为您的模型,并在命令类中包含您的模型和 Carbon use App\Itemuse Carbon\Carbon在控制台命令类的顶部。

关于php - Laravel 自动删除过去日期的表记录,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48481730/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com