design

Laravel’de Pagination ve Sıralama İşlemleri

March 24, 2025

Pagination Nedir?

Pagination, büyük veri setlerini birden fazla sayfaya bölerek kullanıcıya sunma işlemidir. Örneğin, bir blog sitesinde yüzlerce gönderi varsa, bu gönderileri 10’ar 10’ar sayfalara bölerek kullanıcıya sunabilirsiniz. Bu, kullanıcı deneyimini iyileştirir ve performansı artırır.


Laravel’de Pagination Kullanımı

Laravel’de pagination işlemleri oldukça kolaydır. Eloquent ORM, pagination için paginate metodunu sunar. Örneğin, bir blog gönderisi listesini sayfalamak için:


namespace App\Http\Controllers;

use App\Models\Post;
use Illuminate\Http\Request;

class PostController extends Controller
{
    public function index()
    {
        $posts = Post::paginate(10);
        return view('posts.index', compact('posts'));
    }
}

Bu kod, gönderileri 10’ar 10’ar sayfalara böler ve $posts değişkeni ile Blade template’e gönderir.


Blade Template’de Pagination Gösterme

Blade template’de pagination linklerini göstermek için links metodunu kullanabilirsiniz. Örneğin:


<!-- posts/index.blade.php -->
@foreach ($posts as $post)
    <div>
        <h2>{{ $post->title }}</h2>
        <p>{{ $post->excerpt }}</p>
    </div>
@endforeach

{{ $posts->links() }}



Bu kod, gönderi listesini ve pagination linklerini gösterir. Laravel, otomatik olarak sayfalama linklerini oluşturur.


Özelleştirilmiş Pagination

Eğer pagination linklerini özelleştirmek istiyorsanız, Laravel’in sunduğu özellikleri kullanabilirsiniz. Örneğin, Bootstrap stilinde pagination linkleri oluşturmak için:


php artisan vendor:publish --tag=laravel-pagination

Bu komut, pagination view dosyalarını resources/views/vendor/pagination dizinine kopyalar. Bu dosyaları düzenleyerek pagination linklerini özelleştirebilirsiniz.


Sıralama İşlemleri

Sıralama işlemleri, kullanıcıların verileri belirli bir kritere göre sıralamasını sağlar. Örneğin, gönderileri tarihe veya başlığa göre sıralamak isteyebilirsiniz.


Örnek Sıralama Kodu:

namespace App\Http\Controllers;

use App\Models\Post;
use Illuminate\Http\Request;

class PostController extends Controller
{
    public function index(Request $request)
    {
        $sortBy = $request->get('sort_by', 'created_at'); // Varsayılan sıralama kriteri
        $order = $request->get('order', 'desc'); // Varsayılan sıralama yönü

        $posts = Post::orderBy($sortBy, $order)->paginate(10);
        return view('posts.index', compact('posts', 'sortBy', 'order'));
    }
}


Bu kod, sort_by ve order parametrelerine göre gönderileri sıralar ve sayfalar.


Blade Template’de Sıralama Linkleri

Blade template’de sıralama linkleri oluşturmak için aşağıdaki gibi bir yapı kullanabilirsiniz:


<!-- posts/index.blade.php -->
<a href="{{ route('posts.index', ['sort_by' => 'title', 'order' => $order === 'asc' ? 'desc' : 'asc']) }}">
    Başlık {{ $sortBy === 'title' ? ($order === 'asc' ? '▲' : '▼') : '' }}
</a>

<a href="{{ route('posts.index', ['sort_by' => 'created_at', 'order' => $order === 'asc' ? 'desc' : 'asc']) }}">
    Tarih {{ $sortBy === 'created_at' ? ($order === 'asc' ? '▲' : '▼') : '' }}
</a>

@foreach ($posts as $post)
    <div>
        <h2>{{ $post->title }}</h2>
        <p>{{ $post->excerpt }}</p>
    </div>
@endforeach

{{ $posts->links() }}



Bu kod, başlık ve tarihe göre sıralama linklerini gösterir. Kullanıcı, bu linklere tıklayarak verileri sıralayabilir.

Laravel’de Pagination ve Sıralamanın Avantajları

  • Kullanıcı Deneyimi: Pagination ve sıralama, kullanıcıların verilerle etkileşimini kolaylaştırır.
  • Performans: Büyük veri setlerini sayfalara bölerek performansı artırır.
  • Esneklik: Farklı sıralama kriterleri ve yönleri ile kullanıcıların ihtiyaçlarına uygun bir yapı sunar.


Laravel’de pagination ve sıralama işlemleri, büyük veri setlerini kullanıcıya daha kolay bir şekilde sunmanın en etkili yollarından biridir. Eğer kullanıcı deneyimini iyileştirmek ve performansı artırmak istiyorsanız, bu özellikleri mutlaka kullanmalısınız. Bir sonraki yazımda, Laravel’de Social Media Login Entegrasyonu konusuna değineceğim. Görüşmek üzere!


7 + 7 =