Как добавить номер строки каждой строки в таблице? Я использовал разбиение на страницы, но мне было трудно отобразить количество строк. На странице 2 он должен начинаться с 6, так как моя нумерация страниц составляет 5 на страницу.
РЕДАКТИРОВАТЬ
А также как правильно отображать слово showing 1 to 5 of 2095 над таблицей?
КОНТРОЛЛЕР
class SchoolController extends Controller
{
function index()
{
$q = Input::get('q');
if ($q != "") {
$schools = LibSchool::where('school_name', 'LIKE', '%' . $q . '%')
->orWhere('school_id', 'LIKE', '%' . $q . '%')
->orWhere('address', 'LIKE', '%' . $q . '%')
->orWhere('school_head', 'LIKE', '%' . $q . '%')
->orWhere('level', 'LIKE', '%' . $q . '%')
->orderBy('school_name', 'asc')
->with('libdistrict')
->with('libdistrict.libdivision')
->paginate(5)->appends('q', $q);
} else {
$schools = LibSchool::with('libdistrict')
->orderBy('school_name', 'asc')
->with('libdistrict.libdivision')
->paginate(5);
}
return view('schools.index')->with('data', ['schools' => $schools, 'q' => $q]);
}
}
ПОСМОТРЕТЬ
<div class = "card-body">
Showing 1 to 15 of {{$data['schools']->total()}}
<table class = "table table-hover table-bordered table-striped">
<tr>
<th>#</th>
<th>Division</th>
<th>District</th>
<th>School ID</th>
<th>School NAME</th>
<th>Address</th>
<th>School Head</th>
<th>Level</th>
</tr>
@if ($data['schools']->total() > 0)
@foreach($data['schools'] as $school)
<tr>
<td></td>
<td>{{ $school->libdistrict ? $school->libdistrict->libdivision->div_name : 'N/A' }}</td>
<td>{{ $school->libdistrict ? $school->libdistrict->district_name : 'N/A' }}</td>
<td>{{$school->school_id}}</td>
<td>{{$school->school_name}}</td>
<td>{{$school->address}}</td>
<td>{{$school->school_head}}</td>
<td>{{$school->level}}</td>
</tr>
@endforeach
@else
<td colspan = "7" class = "text-danger">No records</td>
@endif
</table>
{{$data['schools']->links()}}
</div>






Попробуй это,
<td>{{ ($data['schools']->currentPage()-1) * $data['schools']->perPage() + $loop->index + 1 }}</td>
Текущая страница дает номер страницы, а переменная $loop дает индекс текущего элемента в цикле, чтобы вы могли вычислить нумерацию.
Вы можете получить показ от 1 до 5 из 2095 следующим образом:
Showing {{($data['schools']->currentPage()-1)* $data['schools']->perPage()+($data['schools']->total() ? 1:0)}} to {{($data['schools']->currentPage()-1)*$data['schools']->perPage()+count($data['schools'])}} of {{$data['schools']->total()}} Results
Я надеюсь, вы понимаете.
@beginner Я обновил свой ответ, попробуйте. Не стесняйтесь спрашивать, есть ли какие-либо проблемы.
@beginner Отлично!
Используйте переменную $loop и текущую страницу для вычисления номера строки.
<td>{{ ($data['schools']->currentPage() - 1) * $data['schools']->perPage() + $loop->iteration }}</td>
Расчет представляет собой текущую страницу минус один, умноженный на размер страницы (для подсчета предыдущих страниц), плюс индекс на текущей странице.
это нормально, если я добавлю 1, потому что он начинается с нуля. <td>{{ ($data['schools']->currentPage() - 1) * $data['schools']->perPage() + $loop->index + 1 }}</td>
@beginner $loop->index начинается с нуля, поэтому вы можете добавить единицу для реальной нумерации.
а также не могли бы вы помочь мне с showing 1 to 5 of 2095?
Используйте $loop->iteration вместо $loop->index. Начинается с 1.
использование $loop->iteration действительно начнется с единицы, я обновил ответ.
Поскольку во всех приведенных выше ответах отсутствуют стандартные методы
Мой ответ будет работать на версии Laravel 5.0 и выше
Моя текущая версия 5.8.28
Вам не нужно ничего из нечеткий расчет
Просто попробуйте это
showing {{$data['schools']->firstItem()}} to {{$data['schools']->lastItem()}} of {{$data['schools']->total()}}
ИЗМЕНИТЬ ДЛЯ метод получения номеров строк
Метод первый
@forelse ($data['schools'] as $school)
{{-- Just Add iteration property of $loop Object --}}
<td>{{$loop->iteration}}</td>
{{-- All Your Fileds Goes Here --}}
@empty
<td colspan = "7" class = "text-danger">No records</td>
@endforelse
Но это не будет работать должным образом, потому что событие, если вы меняете страницу, свойство iteration будет начинаться с номера 1.
Так
Способ второй
{{ ($data['schools']->currentpage()-1) * $data['schools'] ->perpage() + $loop->index + 1 }}
И если вы предпочитаете даже краткий метод
{{($data['schools']->firstItem() + $loop->index)}}
Это даст вам фактический серийный номер
Если что-то пошло не так, оставьте комментарий
Есть ли другой способ получить номера строк, кроме образцов, данных другими ответами?
что вы подразумеваете под номерами строк??. Вы про серийный номер??
числа, соответствующие каждой строке. Так же, как 1,2,3,4 и 5 на скриншоте выше.
Чтобы пронумеровать элементы коллекции и добавить в нее данные, это так же просто, как выполнить цикл foreach в контроллере, тогда у вас все время будут числа в представлении (кстати, они не сохраняются в базе данных)
$i = 1;
foreach ($schools as $item)
{
$item->setAttribute('number', $i);
$i++;
}
и в строке просмотра
{{$item->number}}
это быстрее из других ответов?
Не уверен, но я думаю, что это легко и практично
В вашем контроллере:
$users = User::all()->paginate(3);
return view('/', compact('users'));
В твоем лезвии
@foreach($users as $key => $user)
<tr>
<td>{{ $users->firstItem() + $key }}</td>
<td>{{ $user->name }}</td>
<td>{{ $user->email }}</td>
</tr>
@endforeach
спасибо, это работает. Мне нужно только добавить 1. Однако отображение
showing 1 to 5 of 2092Как это делается правильно?