Eloquent Query中的MySQL变量

时间:2017-11-14 09:08:33

标签: mysql laravel-5 eloquent

我对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 声明?

1 个答案:

答案 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');