Как выполнить автоинкремент внутри db-select?(Laravel) - PullRequest
0 голосов
/ 05 марта 2019

Я попробовал этот метод ниже, но он не работает.

$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 |

Был поискправильный синтаксис, но ничего не кончится.Кто-то знает, как это сделать.Спасибо в Adv.


[Проблема решена] Другое решение, которое я нашел помимо отмеченного ответа ниже.

Вот мой код:

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

Ответы [ 2 ]

0 голосов
/ 05 марта 2019

Я думаю, что для этой ситуации вы можете просто добавить «нет» на стороне PHP:

$record = DB::table('users')
    ->select('users.name AS name')
    ->get()
    ->each(function ($row, $index) {
        $row->no = $index + 1;
    })
0 голосов
/ 05 марта 2019

Я думаю, что вы можете сделать это.

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

Сначала вы можете сосчитать всех пользователей, используя count(name) Затем вы можете печатать в порядке убывания.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...