我对Laravel中的Eloquent Builder有疑问
$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');
我在我的回购中有那个查询,我需要基本上添加一个" rank"这是position
变量引用的内容,但我需要知道如何在Eloquent中初始化变量。由于我已经通过Eloquent模型定义了表格,因此进行from
调用没有意义......
你们会怎么做?单独的 SET 声明?
答案 0 :(得分:1)
您可以使用原始语句中的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');