如果模型更新不多,可能会采用不同的方法?这样我想阅读应该更快(如果我在这里错了,请有人纠正我)
通过创建新的迁移和adding向表中添加另一个字段
$table->timestamp('last_updated');
然后,每当 Post 或 SharedPost 更新时,使用 Events 更新字段,方法是将其添加到 AppServiceProvider:
public function boot()
{
Post::saving(function ($post) {
$post->last_updated = Carbon::now();
});
}
我不确定这是否可行,如果您返回反馈,我们将不胜感激,因为我现在懒得自己尝试:)。更糟糕的情况下,您可能需要将方法更改为:
public function boot()
{
SharedPost::saved(function ($sharedpost) {
$sharedpost->post->last_updated = Carbon::now();
$sharedpost->save();
});
}
如果您不想要 AppServiceProvider 中的代码,也可以查看 Observers。没用过,但是看起来很简单。
那么你可以简单地Post::orderBy('last_updated')->get();
通过这种方式,您的数据库将有一个或两个以上的输入,但我认为(如果我错了,请大家纠正我)get() 应该更快。请记住,我远不是 MySQL 专家。
最后,您可以通过使用 Redis 将这些数据保存到缓存来使其更快。