从投票表中获得前两个post_ids

时间:2014-07-14 17:56:12

标签: mysql database laravel laravel-4 eloquent

我的投票表有post_id列,user_id列和vote列。当有人投票支持某个帖子时,会添加一行记录他们投票的帖子的ID,他们的user_idvote列的值设置为1.我可以找到帖子通过执行此查询获得最多票数:

$toppostid = Vote::orderBy(DB::raw('sum(\'vote\')'))
            ->groupBy('post_id')
            ->find(1)
            ->pluck('post_id');

现在很明显我可以通过将find方法设置为“2”找到第二篇文章。但是,当我这样做时,它返回与原始函数相同的post_id。那么,根据这张表,我如何找到前两个帖子并将其返回?

1 个答案:

答案 0 :(得分:1)

find()实际上是找到具有该ID的行,而不是找到您想要假设的一行。您需要的是take()运算符,它作为限制。

尝试:

$toppostid = Vote::orderBy(DB::raw('sum(\'vote\')'))
        ->groupBy('post_id')
        ->take(2)
        ->pluck('post_id');

请参阅offset and limit section

编辑:文档中还不清楚pluck()是否只会占用第一行的ID。您可能需要将其排除以获得所需的结果。