Laravel 4.1删除所有记录一周

时间:2014-01-25 12:52:09

标签: laravel laravel-4

我想创建一个cron作业,在Laravel中触发任务/命令,删除所有1周大的记录。我正在尝试使用ExpressiveDate来帮助我评估时间。 Laravel最好的办法是什么?

我已注册命令:

Artisan::add(new removeWeek);

在/ apps /命令下创建了一个removeWeek.php命令,工作正常。我正在寻找最好的语法 - 一种雄辩的方式 - 遍历我的记录,只删除当前一周的记录。 cron作业每天运行一次。

2 个答案:

答案 0 :(得分:2)

看起来你已经完成所有设置,所以现在你必须

Calendar::where('created_at', '<', \Carbon\Carbon::now()->subWeek())->delete();

最后一件事:类名通常是大写的:

class RemoveWeek() {

}

答案 1 :(得分:0)

laravel 定期删除记录的方法是使用特征 Illuminate\Database\Eloquent\Prunable

namespace App\Models;

use Illuminate\Database\Eloquent\Model;
use Illuminate\Database\Eloquent\Prunable;

class Post extends Model
{
    use Prunable;

    /**
     * Get the prunable model query.
     *
     * @return \Illuminate\Database\Eloquent\Builder
     */
    public function prunable()
    {
        return static::where('created_at', '<=', now()-> subWeek());
    }
}

然后运行命令:

php artisan model:prune

当然,您可以安排 model:prune artisan 命令定期运行

这里是文档的链接: https://laravel.com/docs/8.x/eloquent#pruning-models