我的投票表有post_id
列,user_id
列和vote
列。当有人投票支持某个帖子时,会添加一行记录他们投票的帖子的ID,他们的user_id
和vote
列的值设置为1.我可以找到帖子通过执行此查询获得最多票数:
$toppostid = Vote::orderBy(DB::raw('sum(\'vote\')'))
->groupBy('post_id')
->find(1)
->pluck('post_id');
现在很明显我可以通过将find
方法设置为“2”找到第二篇文章。但是,当我这样做时,它返回与原始函数相同的post_id
。那么,根据这张表,我如何找到前两个帖子并将其返回?
答案 0 :(得分:1)
find()
实际上是找到具有该ID的行,而不是找到您想要假设的一行。您需要的是take()
运算符,它作为限制。
尝试:
$toppostid = Vote::orderBy(DB::raw('sum(\'vote\')'))
->groupBy('post_id')
->take(2)
->pluck('post_id');
编辑:文档中还不清楚pluck()
是否只会占用第一行的ID。您可能需要将其排除以获得所需的结果。