雄辩查询中的MySQL变量

雄辩查询中的MySQL变量,mysql,laravel-5,eloquent,Mysql,Laravel 5,Eloquent,我有一个关于拉雷维尔的雄辩建筑者的问题 $query = EntryUserVote::query() ->join('users', 'challenge_entry.user_id', '=', 'users.id') ->groupBy(['user_id']) ->select([ 'us

我有一个关于拉雷维尔的雄辩建筑者的问题

$query = EntryUserVote::query()
                      ->join('users', 'challenge_entry.user_id', '=', 'users.id')
                      ->groupBy(['user_id'])
                      ->select([
                          'users.id as user_id',
                          'users.name as username',
                          DB::raw('count(*) AS amount'),
                          DB::raw("@row := @row + 1 as position")
                      ])
                      ->orderBy('amount', 'desc');
我在我的回购协议中有这个查询,我需要基本上添加一个“秩”,这就是
位置
变量所指的,但我需要知道如何以雄辩的方式初始化变量。执行
from
调用没有意义,因为我已经通过雄辩的模型定义了表


你们会怎么做?单独的SET语句?

您可以在原始语句中使用
SET
关键字初始化变量:

DB::statement(DB::raw('set @row=0'));
$query = EntryUserVote::query()
                      ->join('users', 'challenge_entry.user_id', '=', 'users.id')
                      ->groupBy(['user_id'])
                      ->select([
                          'users.id as user_id',
                          'users.name as username',
                          DB::raw('count(*) AS amount'),
                          DB::raw("@row := @row + 1 as position")
                      ])
                      ->orderBy('amount', 'desc');

还是不明白最终目的是什么。update语句?不,不,这是一个select语句,
$query
变量稍后通过
get()
调用。问题是我需要选择
用户id
用户名
以及
金额
,我希望排名从最高金额的1到最低金额的X。“排名”就是这个变量的作用,因为MySQL不支持RowNumber或类似的东西。出于某种原因,位置不遵守orderBy,它们到处都是,ID是按数量排序的,但位置根本不遵守这个顺序,我不知道为什么