使用Laravel获得当前行的排名

时间:2013-05-02 16:48:24

标签: laravel laravel-4 eloquent

在我的Laravel 4应用中,我的users表格有一个votes列。我想找到当前用户的排名。我已经可以使用User::orderBy('votes', 'desc')->take(10)获得前10位用户,但我想在该列表下方显示当前用户的排名。理想情况下,这将是:

Auth::user()->rank('orderBy', 'votes', 'desc');

我得到登录用户,我要求他的排名,假设我通过投票订购用户表。

有人知道我是否可以用Eloquent做到这一点?

2 个答案:

答案 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

希望这有帮助。