Laravel 5.1雄辩的查询顺序(按外部数据和分页)

Laravel 5.1雄辩的查询顺序(按外部数据和分页),laravel,pagination,laravel-5,eloquent,Laravel,Pagination,Laravel 5,Eloquent,我试图从一个有效的雄辩的查询中获取数据,然后对数据进行排序,然后对数据进行分页 我有按日期排序的代码,然后分页,但现在我想按facebook API排序获得的数据,我得到的数据是正确的 问题是我不知道首先应该做什么分页或排序: 如果我先分页,我不知道如何对数据排序,因为该对象是LengthaWalepaginator,并且没有任何orderBy方法。 如果我先订购,我会得到一个集合对象,不能使用->paginate$perPage进行分页。 代码如下: $posts = Post::with('

我试图从一个有效的雄辩的查询中获取数据,然后对数据进行排序,然后对数据进行分页

我有按日期排序的代码,然后分页,但现在我想按facebook API排序获得的数据,我得到的数据是正确的

问题是我不知道首先应该做什么分页或排序:

如果我先分页,我不知道如何对数据排序,因为该对象是LengthaWalepaginator,并且没有任何orderBy方法。 如果我先订购,我会得到一个集合对象,不能使用->paginate$perPage进行分页。 代码如下:

$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++;            
}

如果需要按数据库中未存储的某个值进行排序,则唯一的选项是从数据库中获取所有记录,从外部源Facebook API获取排序数据,按用户定义的函数进行排序,然后进行分页

对数据进行排序后,您可以通过创建分页器对象轻松获得分页版本:

$paginator = new \Illuminate\Pagination\Paginator($posts, $perPage, $currentPage);

无论如何,这个解决方案将是相当繁重的,因为每次你想要一个排序后的帖子列表时,你都需要从Facebook API获取数据。我怀疑您是否需要实时数据,因此我建议将share_count存储在您的posts表中,并定期刷新它,例如运行一个定时的laravel命令。

我刚才在想最后一件事,我认为这是解决此类问题的正确方法