首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >拉勒维尔移除一周前的所有记录

问拉勒维尔移除一周前的所有记录
EN

Stack Overflow用户
提问于 2014-01-25 12:52:09
回答 2查看 871关注 0票数 1

我想要创建一个cron作业,它在Laravel中触发一个任务/命令来删除所有一周前的记录。我试图使用ExpressiveDate来帮助我评估时间。在Laravel做这件事最好的方法是什么?

我已登记命令:

代码语言:javascript
复制
Artisan::add(new removeWeek);

并在/app/命令下创建了一个removeWeek.php命令,运行良好。我正在寻找最好的语法-an雄辩的方式-遍历我的记录,只删除一个星期前从今天的记录。cron任务每天运行一次。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2014-01-25 12:58:10

看来你已经准备好了,所以现在你只需要

代码语言:javascript
复制
Calendar::where('created_at', '<', \Carbon\Carbon::now()->subWeek())->delete();

最后一件事:类名按常规大写:

代码语言:javascript
复制
class RemoveWeek() {

}
票数 2
EN

Stack Overflow用户

发布于 2021-08-05 18:14:38

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

这将帮助您通过实现prunable方法来删除不再需要的模型,该方法返回一个解析要删除的模型的出色的查询生成器。

代码语言:javascript
复制
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());
    }
}

然后运行命令:

代码语言:javascript
复制
php artisan model:prune

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

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

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/21350759

复制
相关文章

相似问题

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