2

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

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

我得到了登录用户,假设我通过投票对用户表进行排序,我会询问他的排名。

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

4

2 回答 2

4

尽管仍然有些 hacky,但您可以通过 Eloquent 中的自定义 getter(mutator)来实现。

public function getRankAttribute()
{
    return $this->newQuery()->where('votes', '>=', $this->votes)->count();
}

然后,您可以将用户排名作为属性。

$rank = Auth::user()->rank;
于 2013-05-03T02:45:35.293 回答
2

就像是:

$currUser = DB::table('users')->where('votes','>=',Auth::user()->votes)->count();

并按用户详细信息显示$currUser在前 10 名列表下方?

希望这会有所帮助。

于 2013-05-02T20:14:36.563 回答