我正在使用laravel,这可能是我的用户表:
id|score
1|10
2|13
3|15
4|7
5|11
用户可以看到具有两个等级的页面:等级a和等级b。
等级a
前10名用户的得分,两种可能的情况:用户谁看到这个排名是在前10名用户与否。
前10个用户:获取10个用户的列表
用户不在前10个:获取11个用户的列表(前10个+当前用户在所有用户中的位置)
等级b
前10名用户按得分在一组给定的id中(有时可能是1有时是10有时是0),相同的两种情况:用户是否在前10名。
前10个用户:获取10个用户的列表
不在前10个用户中的用户:获取11个用户的列表(前10个+当前用户在ID组中的位置)
有什么方法可以用雄辩的语言来表达吗?否则我怎么在mysql中实现呢?
1条答案
按热度按时间dxxyhpgq1#
为了获得第一名,你可以用雄辩的语言:
自
$users
将按得分排序,如果当前用户不在前10名中,则他比列表中的最后一个得分更差,因此将其添加到末尾是有意义的。对于第二级:
因为您需要一个固定的id列表来进行排序,所以只有显示id才有意义,如果当前用户不是您要求的前x个id的一部分,那么添加他也是有意义的。
要获得用户在等级a中的位置,可以在
User
模型如:并使用相同的过程在等级b的id上添加一个过滤器。