In this article, we would like to introduce you to how to create a search with pagination using Livewire in laravel 7(Laravel 7 Livewire Search With Pagination Example Tutorial).

The Livewire is an open-sourced package and “full-stack framework for Laravel that makes building dynamic interface simple, without leaving the comfort of Laravel.” You might be used to using frameworks such as Vue.

Livewire makes an AJAX request to the server with the updated data and the page automatically update without a page reload

If you want to create a filter data with pagination then you can easily create the search with pagination using the livewire package. we also provide the steps for the filter with pagination, so you can follow the below steps.

Overview

Step 1: Install Laravel 7

Step 2: Setting Database Configuration

Step 3: Run Migration Command

Step 4: Create a Dummy Record

Step 5: Install Livewire

Step 6: Create Component

Step 7: Create Route

Step 8: Create Blade Files

Step 9: Run Our Laravel Application

Laravel Livewire Search With Pagination

Step 1: Install Laravel 7

We are going to install laravel 7, so first open the command prompt or terminal and go to go to xampp htdocs folder directory using the command prompt. after then run the below command.

composer create-project --prefer-dist laravel/laravel laravel7_livewire_search_pagination

Step 2: Setting Database Configuration

After the complete installation of laravel. we have to database configuration. now we will open the .env file and change the database name, username, password in the .env file. See below changes in a .env file.

DB_CONNECTION=mysql
DB_HOST=127.0.0.1
DB_PORT=3306
DB_DATABASE=Enter_Your_Database_Name(laravel7_livewire_search_pagination)
DB_USERNAME=Enter_Your_Database_Username(root)
DB_PASSWORD=Enter_Your_Database_Password(root)

Step 3: Run Migration Command
Run the below command for the migration of the user’s table.

php artisan migrate

Step 4: Create a Dummy Record
Now, We will add a dummy records in the ‘users’ table using the laravel tinker command.

php artisan tinker
factory(App\User::class, 200)->create();

Step 5: Install Livewire
Now, We will install a livewire package using the below command.

composer require livewire/livewire

Step 6: Create Component
Here below command help to create the component.

php artisan make:livewire Search

app/Http/Livewire/Search.php

<?php

namespace App\Http\Livewire;

use Livewire\Component;
use Livewire\WithPagination;
use App\User;

class Search extends Component
{
    use WithPagination;
    public $searchText;

    public function render()
    {
        $searchText = '%'.$this->searchText.'%';
        return view('livewire.search',[
            'users' => User::where('name','like', $searchText)->paginate(10)
        ]);
    }
}
?>

Step 7: Create Route
Add the following route code in the “routes/web.php” file.

<?php
 
/*
|--------------------------------------------------------------------------
| Web Routes
|--------------------------------------------------------------------------
|
| Here is where you can register web routes for your application. These
| routes are loaded by the RouteServiceProvider within a group which
| contains the "web" middleware group. Now create something great!
|
*/
 
Route::get('/search', function () {
    return view('searchform');	
});

Step 8: Create Blade Files

So finally, first we will open the searchform.blade.php and search.blade.php files and after then paste the following code.
resources/views/searchform.blade.php

<!DOCTYPE html>
<html>
<head>
    <title>Laravel 7 Livewire Search With Pagination Example Tutorial - XpertPhp</title>
    @livewireStyles
    <link rel="stylesheet" href="{{ asset('css/app.css') }}">
</head>
<body>
<div class="container mt-4">
    <div class="row">
      <div class="col-md-8 offset-2">
        <div class="card">
          <div class="card-header bg-success text-white ">
            <strong>Laravel 7 Livewire Search With Pagination</strong>
          </div>
          <div class="card-body">
            @livewire('search')
          </div>
        </div>
      </div>
    </div>
</div>
</body>
<script src="{{ asset('js/app.js') }}"></script>
@livewireScripts
</html>

resources/views/livewire/search.blade.php

<div class="container">
    <div class="row">
        <div class="col-md-12">
            <input type="text"  class="form-control" placeholder="Search" wire:model="searchText" />
            <table class="table table-bordered" style="margin: 10px 0 10px 0;">
                <tr>
                    <th>Name</th>
                    <th>Email</th>
                </tr>
                @foreach($users as $user)
                <tr>
                    <td>
                        {{ $user->name }}
                    </td>
                    <td>
                        {{ $user->email }}
                    </td>
                </tr>
                @endforeach
            </table>
            {{ $users->links() }}
        </div>
    </div>
</div>

Step 9: Run Our Laravel Application
We can start the server and run this example using the below command.

php artisan serve

Now we will run our example using the below Url in the browser.

http://127.0.0.1:8000/search