Mysql 从投票表中获取前两个post_ID

Mysql 从投票表中获取前两个post_ID,mysql,database,laravel,laravel-4,eloquent,Mysql,Database,Laravel,Laravel 4,Eloquent,我有一个投票表,它有一个post\u id列、一个user\u id列和一个vote列。当有人投票支持一篇文章时,会添加一行,记录他们投票支持的文章的id、他们的用户id,并且投票列的值设置为1。通过执行以下查询,我可以找到投票最多的帖子: $toppostid = Vote::orderBy(DB::raw('sum(\'vote\')')) ->groupBy('post_id') ->find(1) -&g

我有一个投票表,它有一个
post\u id
列、一个
user\u id
列和一个
vote
列。当有人投票支持一篇文章时,会添加一行,记录他们投票支持的文章的id、他们的
用户id
,并且
投票
列的值设置为1。通过执行以下查询,我可以找到投票最多的帖子:

$toppostid = Vote::orderBy(DB::raw('sum(\'vote\')'))
            ->groupBy('post_id')
            ->find(1)
            ->pluck('post_id');
现在很明显,我可以通过将
find
方法设置为“2”来找到第二篇文章。但是,当我这样做时,它返回与原始函数相同的
post\u id
。那么,给定这个表,我如何找到前两个帖子并返回它们呢?

find()
实际上是在查找具有该ID的行,而不是像您假设的那样查找一行。您需要的是
take()
操作符,它充当一个限制

尝试:

编辑:文档中也不清楚
pull()
是否只获取第一行的ID。您可能需要排除该ID以获得所需的结果。

您需要
take(2)
而不是
find
list('post_ID')
而不是
pull
来获取数组
pull
返回单个第一个值
$toppostid = Vote::orderBy(DB::raw('sum(\'vote\')'))
        ->groupBy('post_id')
        ->take(2)
        ->pluck('post_id');