Как получить порядковый номер строки
Есть такая таблица и код выборки из базы:
id - name
1 - Москва
4 - Самара
5 - Саратов
7 - Вологда
$q = 'Са'; // поиск для примера
$query = DB::table('city')->select('*');
$query->where('name', 'like', "%{$q}%");
$rows = $query->get();
Результат:
id - name
4 - Самара
5 - Саратов
Как мне в переменной $rows узнать какой это номер строки?
Из этого примера номера строк должны быть 2 и 3.
И самое главное номера order by должны быть по id, даже если сортировка по name, но номер строки нужно получить именно по сортировки id
Также с учетом постраничной навигации
Ответы (2 шт):
Автор решения: Sergey Mironov
→ Ссылка
Устал голову ломать, придумал такое решение на свой вопрос, главное задачу мою решает.
$cityRow = [];
$cityI = 1;
$rows = DB::table('city')->select('id')->orderBy('id', 'ASC')->get();
foreach($rows as $row){
$cityRow[$row->id] = $cityI++;
}
$q = 'Са'; // поиск для примера
$query = DB::table('city')->select('*');
$query->where('name', 'like', "%{$q}%");
$rows = $query->get();
@foreach($rows as $row)
<tr>
<td>{{ $cityRow[$row->id] }}</td>
<td>{{ $row->name }}</td>
</tr>
@endforeach
Автор решения: Akina
→ Ссылка
Попробуйте преобразовать в синтаксис laravel вот такой запрос
SELECT t1.id, t1.name, COUNT(t2.id) AS rownum
FROM city AS t1
JOIN city AS t2 ON t1.id >= t2.id
WHERE t1.name LIKE '%{$q}%'
GROUP BY t1.id, t1.name