Laravel检查超过特定日期的文章

时间:2018-07-16 22:07:53

标签: php laravel

在我正在从事的项目中,我有一个区域可以上传文章。为了测试性能,我使用Faker生成了2500条文章。我得出的结论是,我应该剔除年龄超过x天或几个月的文章。

我所有的文章都有发布状态:“已发布”,“草稿”和“已存档”,这些存储在文章数据库表中。

我将建立一个计划任务,该任务将每月运行一次以检查旧文章,然后将这些文章设置为已存档。

在Laravel中,我知道我可以做这样的事情:

$articles = Article::where('created_at', '<=', Carbon::now()->subDays(182));
$articles->published = 'archived';
$articles->save();

但实际上,我追求的是:

UPDATE articles SET published = 'archived' WHERE created_at > <6 months>

这可能真的非常简单,也许我只是过于复杂,但是我一直盯着它看了90分钟。

1 个答案:

答案 0 :(得分:2)

您可以在这样的更新方法中使用where子句:

Article::where('created_at', '<=', Carbon::now()->subMonths(6))->update(['published' => 'archived']);

这假设您的published属性是可填写的。还值得注意的是,该方法不会触发任何雄辩的事件。