在我的Laravel 4应用中,我的users
表格有一个votes
列。我想找到当前用户的排名。我已经可以使用User::orderBy('votes', 'desc')->take(10)
获得前10位用户,但我想在该列表下方显示当前用户的排名。理想情况下,这将是:
Auth::user()->rank('orderBy', 'votes', 'desc');
我得到登录用户,我要求他的排名,假设我通过投票订购用户表。
有人知道我是否可以用Eloquent做到这一点?
答案 0 :(得分:4)
虽然仍然有点hacky,你可以通过Eloquent中的自定义getter(mutator)来实现。
public function getRankAttribute()
{
return $this->newQuery()->where('votes', '>=', $this->votes)->count();
}
然后,您可以将用户排名作为属性。
$rank = Auth::user()->rank;
答案 1 :(得分:2)
类似的东西:
$currUser = DB::table('users')->where('votes','>=',Auth::user()->votes)->count();
并按前10名列表下方的用户详细信息显示$currUser
?
希望这有帮助。