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

问题描述 投票:0回答:2

我尝试过这种方法,但它不起作用。

$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();
laravel laravel-5.7
2个回答
1
投票

我认为在这种情况下你可以在PHP端添加“no”:

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

0
投票

我想你可以做到这一点。

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

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

© www.soinside.com 2019 - 2024. All rights reserved.