Laravel은 많은 최신 기능과 개발 친화적인 도구를 제공하는 인기 있는 PHP 개발 프레임워크로, 개발자가 웹 사이트와 애플리케이션을 보다 효율적으로 구축할 수 있도록 해줍니다. 웹 애플리케이션을 개발하는 과정에서 쿼리 결과를 페이지에 표시해야 하는 경우가 종종 있습니다. 이 글에서는 Laravel을 사용하여 페이징 기능을 구현하는 방법을 소개합니다.
1. 페이징 소개
페이징이란 많은 양의 데이터를 여러 페이지로 나누어 표시하는 방식을 말하며 일반적으로 각 페이지에 표시할 데이터의 양이 이보다 많을 경우를 설정합니다. 값을 입력하면 페이지가 자동으로 넘어갑니다. 이 접근 방식을 사용하면 페이지 로딩 시간과 대역폭 사용량을 크게 줄일 수 있어 사용자가 데이터를 더 쉽게 보고 탐색할 수 있습니다.
2. Laravel 페이징 작업
Laravel은 페이징 기능을 구현하기 위해 Paginator 클래스를 제공합니다. 쿼리 결과 객체를 Paginator의 make 메소드에 전달하고 각 페이지에 표시할 데이터의 양을 지정하여 페이징 인스턴스를 얻을 수 있습니다. 인스턴스에서 render 메소드를 호출하면 Laravel이 자동으로 페이지 매김 링크를 생성할 수 있습니다.
구체적인 코드 구현을 살펴보겠습니다.
다음 명령을 실행하여 Laravel을 설치하세요:
composer create-project --prefer-dist laravel/laravel blog
데이터베이스 테이블 아티클 생성 및 일부 샘플 데이터 삽입:
CREATE TABLE `articles` ( `id` int(10) unsigned NOT NULL AUTO_INCREMENT, `title` varchar(255) COLLATE utf8mb4_unicode_ci NOT NULL, `body` text COLLATE utf8mb4_unicode_ci NOT NULL, `created_at` timestamp NULL DEFAULT NULL, `updated_at` timestamp NULL DEFAULT NULL, PRIMARY KEY (`id`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;
INSERT INTO `articles` (`title`, `body`, `created_at`, `updated_at`) VALUES ('Article 1', 'This is article 1 content', '2021-01-01 12:00:00', '2021-01-01 12:00:00'); INSERT INTO `articles` (`title`, `body`, `created_at`, `updated_at`) VALUES ('Article 2', 'This is article 2 content', '2021-01-02 12:00:00', '2021-01-02 12:00:00'); INSERT INTO `articles` (`title`, `body`, `created_at`, `updated_at`) VALUES ('Article 3', 'This is article 3 content', '2021-01-03 12:00:00', '2021-01-03 12:00:00'); INSERT INTO `articles` (`title`, `body`, `created_at`, `updated_at`) VALUES ('Article 4', 'This is article 4 content', '2021-01-04 12:00:00', '2021-01-04 12:00:00');
/Models app/Http/Controllers 디렉터리에 ArticlesController.php 파일을 생성하고 다음 코드를 추가합니다:
<?php namespace App\Models; use Illuminate\Database\Eloquent\Factories\HasFactory; use Illuminate\Database\Eloquent\Model; class Article extends Model { use HasFactory; protected $fillable = ['title', 'body']; public function getDateAttribute() { return $this->created_at->format('Y-m-d'); } }
resources/views 디렉터리에 기사 디렉터리를 생성하고 index.blade.php를 생성합니다. 이 디렉터리에 파일을 저장하고 다음 코드를 추가합니다.
<?php namespace App\Http\Controllers; use Illuminate\Http\Request; use App\Models\Article; class ArticlesController extends Controller { public function index(Request $request) { $articles = Article::paginate(2); return view('articles.index', compact('articles')); } }
먼저 foreach 루프에 각 기사를 표시합니다.
$article->title 및 $article->body 속성을 사용하여 Article 모델에서 기사 제목과 본문을 가져옵니다.
@extends('layouts.app') @section('content') <div class="container"> <div class="row"> <div class="col-md-8"> @foreach($articles as $article) <div class="card mb-3"> <div class="card-header"> {{ $article->title }} </div> <div class="card-body"> <p class="card-text">{{ $article->body }}</p> </div> <div class="card-footer text-right"> <small class="text-muted">{{ $article->date }}</small> </div> </div> @endforeach {{ $articles->links() }} </div> </div> </div> @endsection
.card { margin-bottom: 20px; } .pagination { margin-top: 20px; }
app.blade.php에 Bootstrap4 CSS 스타일을 추가했습니다.
Bootstrap 4의 JS 파일도 소개했지만 Laravel에는 필요한 JS 파일을 public/js/app.js 파일에 자동으로 패키징할 수 있는 Webpack 패키징 도구가 포함되어 있으므로 수동으로 소개할 필요는 없습니다.
위 내용은 Laravel을 사용하여 페이징 기능을 구현하는 방법의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!