我试图从Eloquent查询中获取数据(有效),然后对数据进行排序,然后对数据进行分页。
我按日期排序代码,然后分页,但现在我想通过facebook API获取数据(我正确获取数据)。
问题是我不知道我应该先做什么(分页或订购):
这是代码:
$posts = Post::with('User')->
where('created_at', '<', new \DateTime)->
paginate($perPage);
$counter = 0;
foreach ($posts as $post) {
$url = 'http://myweb.com/' . $post['id'];
$fb_stuff = json_decode(file_get_contents('https://api.facebook.com/method/links.getStats?urls=' . $url . '&format=json'), true);
$posts[$counter]['share_count'] = $fb_stuff[0]['share_count'];
$counter++;
}
答案 0 :(得分:0)
如果您需要按照未存储在数据库中的某个值进行排序,那么唯一的选择是从数据库中获取所有记录,从外部源(Facebook API)获取排序数据,按用户定义的函数对其进行排序(见http://php.net/manual/en/function.usort.php)然后分页。
对数据进行排序后,您可以通过创建Paginator对象轻松获取分页版本:
$paginator = new \Illuminate\Pagination\Paginator($posts, $perPage, $currentPage);
无论如何,这个解决方案将非常繁重,因为每次你想要一个排序的帖子列表时你需要从Facebook API获取数据。我怀疑您需要实时数据,因此我建议将share_count存储在您的帖子表中并定期刷新,例如通过运行预定的laravel命令。