如何在db-select中执行自增? (laravel)

How to perform auto-increment inside db-select? (laravel)

我尝试了下面的这个方法,但它不起作用。

$row = 0;
$record = DB::table('users')
  ->select(
    DB::raw("{{ $row++ }} AS no"),
    'users.name AS name'
  )
  ->get();

我只希望下面这些输出

|no|  Name   |
|1 | sample1 |
|2 | sample2 |
|3 | sample3 |

一直在寻找正确的语法,但一无所获。有人知道如何做到这一点。提前致谢


[问题已解决] 除了下面的标记答案之外,我找到了另一个解决方案。

这是我的代码:

DB::statement(DB::raw("SET @row = '0'"));
$record = DB::table('users')
  ->select(
    DB::raw("@row:=@row+1 AS no"),
    'name'
  )->get();

我觉得你可以做到。

$record = DB::table('users')
       ->select(DB::raw('count(name) as No, name'))
       ->groupBy('name')
       ->orderBy('name','DESC')
       ->get();

首先,您可以使用 count(name) 统计所有用户 然后你可以按降序打印。

我认为对于这种情况,您可以简单地在 PHP 侧添加 "no":

$record = DB::table('users')
    ->select('users.name AS name')
    ->get()
    ->each(function ($row, $index) {
        $row->no = $index + 1;
    })