如何在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;
})
我尝试了下面的这个方法,但它不起作用。
$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;
})