好吧,所以我有一个基于Feed的网络应用,有点像 facebook 的新闻Feed 。问题在于我生成Feed的方式。我不确定这是最有效和/或最好的方式。
我使用Laravel + Eloquent ORM
$feed = Post::whereIn('id', $following_ids)
->orderBy('created_at', 'desc')
->take(20)
->skip($page)
->get();
其中$following_ids
是用户关注的ID数组。
问题在于,据我所知,上述语句生成的SQL会导致您所关注的用户首先加载每个帖子,然后按时间顺序排序,只有实际使用的小子集。
有没有更有效的方法来做到这一点?这看起来真的很浪费。
答案 0 :(得分:2)
你应该看看我写的这个包:https://github.com/GetStream/stream-laravel;它与您的Eloquent模型集成,并将数据存储在Feed中。
使用相同的套餐,您可以让用户关注其他Feed并创建类似于Facebook的新闻源(或Twitter)的功能。