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');