雄辩查询中的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是按数量排序的,但位置根本不遵守这个顺序,我不知道为什么