Heim  >  Artikel  >  PHP-Framework  >  Beispiel zur Erläuterung der manuellen Implementierung der Paging-Funktion in Laravel

Beispiel zur Erläuterung der manuellen Implementierung der Paging-Funktion in Laravel

PHPz
PHPzOriginal
2023-04-14 09:43:52970Durchsuche

Laravel ist ein kostenloses, in PHP geschriebenes Open-Source-Webanwendungs-Framework. Mit seiner einfachen Syntax, seinem schönen Design und seiner leistungsstarken Skalierbarkeit ist es seit langem zu einem der Standards im Bereich der Webentwicklung geworden und wurde von der Mehrheit der Entwickler begrüßt.

Und Laravels eigene Paginierungsmethode Paginator ist ebenfalls eine seiner Besonderheiten. Manchmal müssen wir jedoch Paging manuell implementieren, um spezielle Anforderungen zu erfüllen. Lassen Sie uns also im Detail vorstellen, wie die Paging-Funktion manuell implementiert wird.

Vorbereitung

Bevor wir mit der manuellen Implementierung von Paging beginnen, müssen wir eine Laravel-Komponente namens illuminate/support installieren. Dieses Paket bietet einige kleine, aber wichtige Zusatzfunktionen. Es kann über Composer installiert werden:

composer require illuminate/support

Nach Abschluss der Installation müssen wir den Anbieter in der Datei config/app.php des Laravel-Projekts hinzufügen:

'providers' => [
    // ...
    Illuminate\Support\ServiceProvider::class,
    // ...
],

Auf diese Weise können wir die von bereitgestellte Paging-Funktion verwenden Laravel.

Paging manuell implementieren

Sie können die Paginator-Methode von Laravel verwenden, um Abfrageergebnisse zu paginieren. Dies führt jedoch dazu, dass die Datenbank zweimal abgefragt wird, und manchmal ist die Leistung möglicherweise nicht so gut wie bei der manuellen Implementierung. Die Möglichkeit, manuelles Paging zu implementieren, besteht darin, die von Laravel bereitgestellte Collection-Implementierung zu verwenden.

Zunächst definieren wir die übergebenen Parameter: $perPage stellt die Anzahl der auf jeder Seite angezeigten Elemente dar und $page stellt die aktuelle Seitennummer dar.

public function manualPaginate($perPage, $page)
{
    $records = DB::table('table_name')->get(); // 从数据库中取出所有记录

    $total = count($records); // 根据记录总数获取总条数

    $start = ($page - 1) * $perPage; // 获取这一页的起始位置

    $records = collect($records); // 将获取的记录转换成 Collection 类型

    $pageData = $records->slice($start, $perPage); // 获取这一页的记录

    $paginator = new LengthAwarePaginator( // 将分页数据封装成分页器
        $pageData,
        $total,
        $perPage,
        $page,
        [
            'path' => LengthAwarePaginator::resolveCurrentPath(), // 当前页的 URL 地址
            'pageName' => 'page',
        ]
    );

    return $paginator; // 返回分页器对象
}

Im obigen Code rufen wir zuerst alle Datensätze aus der Datenbank ab, ermitteln dann die Gesamtzahl der Datensätze durch die Gesamtzahl der Datensätze, ermitteln dann die Startposition dieser Seite und die Datensätze dieser Seite und konvertieren sie Erhaltene Datensätze werden in den Sammlungstyp umgewandelt, dann werden die Paging-Daten über die Klasse „LengthAwarePaginator“ in einen Pager gekapselt und schließlich das Pager-Objekt zurückgegeben.

In der Ansicht können Sie die Elemente des Paginators auf folgende Weise abrufen:

{{-- 获取分页数据 --}}
@foreach ($paginator as $item)
    <tr>
        <td>{{ $item->id }}</td>
        <td>{{ $item->name }}</td>
        <td>{{ $item->email }}</td>
    </tr>
@endforeach

{{-- 获取分页链接 --}}
{{ $paginator->links() }}

An dieser Stelle haben wir die Paginierungsfunktion manuell implementiert. Dies ist natürlich nur ein einfaches Beispiel, und in tatsächlichen Situationen kann eine komplexere Verarbeitungslogik erforderlich sein. Durch diese einfache Implementierung können wir jedoch ein tieferes Verständnis der Prinzipien des manuellen Paging erlangen und uns auch einige Ideen für die Anpassung der Paging-Funktion in tatsächlichen Projekten liefern.

Das obige ist der detaillierte Inhalt vonBeispiel zur Erläuterung der manuellen Implementierung der Paging-Funktion in Laravel. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn