Menu

Laravel Livewire Pagination Example

Hello Friends,
This post is based on laravel livewire pagination. This post will discuss how to create pagination in laravel livewire. This example is based on a simple laravel example.
I will show you how to implement pagination with laravel livewire.
Let's start.

Install Laravel

Our First step is to install laravel, for this, I am using the composer command to create a laravel project. To install laravel open your command line tool or terminal and type the below command.

composer create-project laravel/laravel livewire

In this command livewire is my project folder name.
 

Connecting Database

After installing the project we need to connect our project with the database. For this, we can use any database service. I am using MySQL for connecting the project with the database.
Just change the creds in the .env file.

DB_CONNECTION=mysql
DB_HOST=127.0.0.1
DB_PORT=3306
DB_DATABASE=livewire
DB_USERNAME=root
DB_PASSWORD=

Creating Dummy users for the paginations 

Once our database is connected. Then we are ready to create some dummy data. For this, we will use laravel tinker and factory to create some dummy data.
You can also check post related to tinker.
To create dummy records. Open your cmd or terminal and run the below code.

php artisan tinker
User::factory()->count(100)->create()

By running this command 100 records will be created in the database user table.

Installing Livewire

In this step, we will simply install laravel livewire In our laravel project. To install livewire run the following command.

composer require livewire/livewire

Create Livewire component

After installing laravel livewire, we need to create the component for the user paginations. To create paginate component run the following command.

php artisan make:livewire user-pagination

This command will create the following files.
 

app/Http/Livewire/UserPagination.php

resources/views/livewire/user-pagination.blade.php

Now, both files will be used in the pagination.
Let's update the following files to achieve our pagination component. 

app/Http/Livewire/UserPagination.php

  
namespace App\Http\Livewire;
  
use Livewire\Component;
use Livewire\WithPagination;
use App\Models\User;
  
class UserPagination extends Component
{
    use WithPagination;
  
    /**
     * Write code on Method
     *
     * @return response()
     */
    public function render()
    {
        return view('livewire.user-pagination', [
            'users' => User::paginate(15),
        ]);
    }
}

Now, change the blade file for the pagination.
resources/views/livewire/user-pagination.blade.php 

<div>
    <table class="table-auto" style="width: 100%;">
      <thead>
        <tr>
          <th class="px-4 py-2">ID</th>
          <th class="px-4 py-2">Name</th>
          <th class="px-4 py-2">Email</th>
          <th class="px-4 py-2">Created At</th>
        </tr>
      </thead>
      <tbody>
        @foreach ($users as $user)
            <tr>
            <td class="border px-4 py-2">{{ $user->id }}</td>
            <td class="border px-4 py-2">{{ $user->name }}</td>
            <td class="border px-4 py-2">{{ $user->email }}</td>
            <td class="border px-4 py-2">{{ $user->created_at }}</td>
            </tr>
        @endforeach
      </tbody>
    </table>
  
    {{ $users->links() }}
</div>

Create Route

Let's create a route for the pagination. So we can access the pagination page or ui.

routes/web.php

Route::get('users', function () {
    return view('users');
});

Create Blade view file

Let's create a view file with users name to access the route file. After creating the file we need to add the following code. 
resources/views/users.blade.php

<!DOCTYPE html>
<html>
<head>
    <title>Laravel Livewire Pagination Example - Templatebench</title>
    @livewireStyles
    <link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/tailwindcss/1.9.0/tailwind.min.css" integrity="sha512-wOgO+8E/LgrYRSPtvpNg8fY7vjzlqdsVZ34wYdGtpj/OyVdiw5ustbFnMuCb75X9YdHHsV5vY3eQq3wCE4s5+g==" crossorigin="anonymous" />
    <link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/bootstrap@5.2.2/dist/css/bootstrap.min.css" integrity="sha384-Zenh87qX5JnK2Jl0vWa8Ck2rdkQ2Bzep5IDxbcnCeuOxjzrPF/et3URy9Bv1WTRi" crossorigin="anonymous">
</head>
<body>
    
<div class="container">
    
    <div class="card">
      <div class="card-header">
        Laravel Livewire Pagination Example
      </div>
      <div class="card-body">
        @livewire('user-pagination')
      </div>
    </div>
        
</div>
    
</body>
  
@livewireScripts
  
</html>

Now our project is ready to run.

Start php server

To run our project run the following code.

php artisan serve.

You can check pagination at following.
 

662
Search

Ads