Laravel Pagination с количеством строк

Как добавить номер строки каждой строки в таблице? Я использовал разбиение на страницы, но мне было трудно отобразить количество строк. На странице 2 он должен начинаться с 6, так как моя нумерация страниц составляет 5 на страницу.

РЕДАКТИРОВАТЬ

А также как правильно отображать слово showing 1 to 5 of 2095 над таблицей?

Laravel Pagination с количеством строк

КОНТРОЛЛЕР

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>
Стоит ли изучать PHP в 2026-2027 годах?
Стоит ли изучать PHP в 2026-2027 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Оживление вашего приложения Laravel: Понимание режима обслуживания
Оживление вашего приложения Laravel: Понимание режима обслуживания
Здравствуйте, разработчики! В сегодняшней статье мы рассмотрим важный аспект управления приложениями, который часто упускается из виду в суете...
Коллекции в Laravel более простым способом
Коллекции в Laravel более простым способом
Привет, читатели, сегодня мы узнаем о коллекциях. В Laravel коллекции - это способ манипулировать массивами и играть с массивами данных. Благодаря...
Поиск нового уровня в Laravel с помощью MeiliSearch и Scout
Поиск нового уровня в Laravel с помощью MeiliSearch и Scout
Laravel Scout - это популярный пакет, который предоставляет простой и удобный способ добавить полнотекстовый поиск в ваше приложение Laravel. Он...
Освоение архитектуры микросервисов с Laravel: Лучшие практики, преимущества и советы для разработчиков
Освоение архитектуры микросервисов с Laravel: Лучшие практики, преимущества и советы для разработчиков
В последние годы архитектура микросервисов приобрела популярность как способ построения масштабируемых и гибких приложений. Laravel , популярный PHP...
Как построить CRUD-приложение в Laravel
Как построить CRUD-приложение в Laravel
Laravel - это популярный PHP-фреймворк, который позволяет быстро и легко создавать веб-приложения. Одной из наиболее распространенных задач в...
2
0
3 997
5
Перейти к ответу Данный вопрос помечен как решенный

Ответы 5

Ответ принят как подходящий

Попробуй это,

<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

Я надеюсь, вы понимаете.

спасибо, это работает. Мне нужно только добавить 1. Однако отображение showing 1 to 5 of 2092 Как это делается правильно?

beginner 16.07.2019 09:05

@beginner Я обновил свой ответ, попробуйте. Не стесняйтесь спрашивать, есть ли какие-либо проблемы.

Sagar Gautam 16.07.2019 09:08

@beginner Отлично!

Sagar Gautam 16.07.2019 09:24

Используйте переменную $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 16.07.2019 09:01

@beginner $loop->index начинается с нуля, поэтому вы можете добавить единицу для реальной нумерации.

Sagar Gautam 16.07.2019 09:02

а также не могли бы вы помочь мне с showing 1 to 5 of 2095?

beginner 16.07.2019 09:02

Используйте $loop->iteration вместо $loop->index. Начинается с 1.

Rouhollah Mazarei 16.07.2019 09:03

использование $loop->iteration действительно начнется с единицы, я обновил ответ.

Jerodev 16.07.2019 09:05

Поскольку во всех приведенных выше ответах отсутствуют стандартные методы

Мой ответ будет работать на версии Laravel 5.0 и выше

Моя текущая версия 5.8.28

Вам не нужно ничего из нечеткий расчет

Просто попробуйте это

showing {{$data['schools']->firstItem()}} to {{$data['schools']->lastItem()}} of {{$data['schools']->total()}}

Подробнее https://github.com/laravel/framework/blob/5.8/src/Illuminate/Pagination/LengthAwarePaginator.php#L163

ИЗМЕНИТЬ ДЛЯ метод получения номеров строк

Метод первый

@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)}}

Это даст вам фактический серийный номер

Если что-то пошло не так, оставьте комментарий

Есть ли другой способ получить номера строк, кроме образцов, данных другими ответами?

beginner 16.07.2019 10:10

что вы подразумеваете под номерами строк??. Вы про серийный номер??

ManojKiran Appathurai 16.07.2019 10:15

числа, соответствующие каждой строке. Так же, как 1,2,3,4 и 5 на скриншоте выше.

beginner 16.07.2019 10:17

Чтобы пронумеровать элементы коллекции и добавить в нее данные, это так же просто, как выполнить цикл foreach в контроллере, тогда у вас все время будут числа в представлении (кстати, они не сохраняются в базе данных)

$i = 1;
foreach ($schools as $item)
{
$item->setAttribute('number', $i);
$i++;
}

и в строке просмотра

{{$item->number}}

это быстрее из других ответов?

beginner 16.07.2019 10:12

Не уверен, но я думаю, что это легко и практично

Josep Feixas 16.07.2019 10:13

В вашем контроллере:

$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

Другие вопросы по теме