Laravel 获取当前行';s与拉雷维尔排名相同

Laravel 获取当前行';s与拉雷维尔排名相同,laravel,laravel-4,eloquent,Laravel,Laravel 4,Eloquent,在我的Laravel 4应用程序中,我的用户表有一个投票列。我想找到当前用户的排名。我已经可以通过User::orderBy('vowers','desc')->take(10)获得前10名用户,但我想在该列表下方显示当前用户的排名。理想情况下,这将类似于: Auth::user()->rank('orderBy', 'votes', 'desc'); $currUser = DB::table('users')->where('votes','>=',Auth::user(

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

Auth::user()->rank('orderBy', 'votes', 'desc');
$currUser = DB::table('users')->where('votes','>=',Auth::user()->votes)->count();
我得到了登录的用户,我要求他的排名,假设我按投票顺序排列用户表

有人知道我能不能用雄辩的方式做到这一点吗?

比如:

Auth::user()->rank('orderBy', 'votes', 'desc');
$currUser = DB::table('users')->where('votes','>=',Auth::user()->votes)->count();
并按前10名列表下方的用户详细信息显示
$currUser


希望这会有所帮助。

尽管仍然有点粗糙,但您可以通过一个自定义的getter(mutator)在Elount中实现

公共函数getRankAttribute()
{
返回$this->newQuery()->where('voces','>=',$this->voces)->count();
}
然后可以将用户排名作为属性

$rank=Auth::user()->rank;

聪明。也很黑。我将在一天左右的时间内不做标记,以获得正式的解决方案,但它是可行的。谢谢优雅的类似的黑客解决方案。我将提交一个功能请求,最好使用数据库的本机功能。实际上,
$this
似乎无法访问作用域方法中的模型字段,而普通方法可以。这对我很有效。您需要通过
Auth::user()
执行此操作,因此您实际上是在该用户对象上调用
rank
。我刚刚实际测试了这个,但它似乎没有返回计数。我更新了我的答案,改为通过getter使用。我已经测试,可以确认它的工作。