laravel - Laravel - 过期帖子的碳
问题描述
所以在这个项目中,我必须让帖子在 7 天后过期。我有这段代码,HomeController
现在它显示了今天在我的主页上发布的所有帖子:
...
public function index()
{
$date = Carbon::now();
$date->format("Y-m-d");
$posts = Post::where('status','=', 1)->whereDate('created_at','=', $date)->get();
return view('home', compact('date', $date))->with('posts', $posts);
}
...
所以它向我显示了今天发布的所有状态为 1 的帖子,这没关系。但我需要告诉我,帖子不仅是 1 天,而且是 7 天,过期后需要自动删除。我该如何解决这个问题?请帮忙!谢谢!
已编辑
我试过:
...
public function index()
{
$current = Carbon::now();
$date = $current->addDays(7);
$date->format("Y-m-d");
$posts = Post::where('status','=', 1)->whereDate('created_at','=', $date)->get();
return view('home', compact('date', $date))->with('posts', $posts);
}
...
但什么也没发生。
解决方案
使用 Carbon,您可以轻松地减去这样的天数:
$posts = Post::where('status', 1)
->where('created_at', '>', Carbon::now()->addDays(7))
->get();
foreach($posts as $post) {
$post->delete();
}
您基本上是在比较当前日期并从现在起删除 7 天。之后,您将获得一个帖子集合并删除所有内容。
您可能希望在后台构建删除逻辑,以便系统每天/每天检查是否该删除它。为此,您需要创建Cronjob或Task。
有了它,您可以例如轻松地创建这样的东西:
$schedule->job(new PostRemoveProcess, 'postsremove')->everyWeek();
查看有关此的文档,它解释得非常好。
推荐阅读
- excel - Excel“认为”一个单元格有一个值,但我在任何地方都看不到值
- java - 致命错误和非致命运行时错误有什么区别?
- react-native - 构建独立应用程序时,BottomTabNavigator 是一半覆盖
- python - 每次单元测试后重置 Prometheus lib 的 CollectorRegistry
- python - 为什么无法在可可应用程序调用的 c++ func 中嵌入自定义 python 模块
- tmux - 绑定到 tmux 中的通用数字键?
- php - 使用 Category Slug Wordpress 获取第一篇文章
- numpy - 如何将标量函数重塑为网格上的标量函数
- android - 当我在活动中有文本视图时如何更新日期归档
- javascript - 在图像上添加/编辑路径