Laravel 获取当前行';s与拉雷维尔排名相同
在我的Laravel 4应用程序中,我的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(
用户
表有一个投票
列。我想找到当前用户的排名。我已经可以通过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使用。我已经测试,可以确认它的工作。