Laravel 9 livewire search with pagination example; In this tutorial, we will learn how to make a livewire search with pagination in laravel 9 app.
Laravel 9 Livewire Pagination with Search Example
Follow the following steps to create livewire search with pagination in laravel 9 app:
- Step 1: Install Laravel App
- Step 2: Add Database Detail
- Step 3: Create Model & Migration using Artisan
- Step 4: Install Livewire Package
- Step 5: Create Component using Artisan
- Step 6: Add Route
- Step 7: Create View File
- Step 8: Run Development Server
Step 1: Install Laravel App
First of all, Open terminal OR command prompt and run the following command to install laravel fresh app to create laravel livewire search with pagination project:
composer create-project --prefer-dist laravel/laravel blog
Step 2: Add Database Detail
In this step, Add database credentials in the .env file. So open project root directory and find .env file. Then add database detail in .env file:
DB_CONNECTION=mysql DB_HOST=127.0.0.1 DB_PORT=3306 DB_DATABASE=here database name here DB_USERNAME=here database username here DB_PASSWORD=here database password here
Step 3: Run Migration
In this step, generate model, migration and faker file using the following command:
php artisan make:model Employee -fm
This command will create one model name Employee.php,create one migration that name create_employees_table.php and one faker file that name EmployeeFactory.php .
So, Navigate to database/migrations folder and open create_ employees_table.php file. Then update the following code into create_ employees_table.php file:
<?php
use Illuminate\Database\Migrations\Migration;
use Illuminate\Database\Schema\Blueprint;
use Illuminate\Support\Facades\Schema;
class CreateEmployeesTable extends Migration
{
/**
* Run the migrations.
*
* @return void
*/
public function up()
{
Schema::create('employees', function (Blueprint $table) {
$table->bigIncrements('id');
$table->string('name');
$table->string('email');
$table->timestamps();
});
}
/**
* Reverse the migrations.
*
* @return void
*/
public function down()
{
Schema::dropIfExists('employees');
}
}
Next, open command prompt and run the following command to create the table into database:
php artisan migrate
Next, Navigate to app/Models/Employee.php and update the following code into Employee.php model as follow:
<?php
namespace App\Models;
use Illuminate\Database\Eloquent\Model;
class Employee extends Model
{
protected $guarded = [];
}
Next, Navigate to database/factories and open EmployeeFactory.php. Then update the following code into it as follow:
<?php
use Faker\Generator as Faker;
$factory->define(App\Models\Employee::class, function (Faker $faker) {
return [
'name' => $faker->name,
'email' => $faker->unique()->safeEmail
];
});
After that, run the following command to generate fake data using faker as follow:
php artisan tinker
//and then
factory(\App\Models\Employee::class,50)->create()
exit
Step 4: Install Livewire Package
In this step, we need to install livewire package to laravel project using the following command:
composer require livewire/livewire
Step 5: Create Component using Artisan
In this step, create the livewire components for creating a livewire search with pagination component using the following command. So Open cmd and run the following command:
php artisan make:livewire search-pagination
This command will create the following components on the following path:
app/Http/Livewire/SearchPagination.php resources/views/livewire/search-pagination.blade.php
Now, Navigate to app/Http/Livewire folder and open SearchPagination.php file. Then add the following code into SearchPagination.php file:
<?php
namespace App\Http\Livewire;
use Livewire\Component;
use Livewire\WithPagination;
use App\Models\Employee;
class SearchPagination extends Component
{
use WithPagination;
public $searchTerm;
public function render()
{
$searchTerm = '%'.$this->searchTerm.'%';
return view('livewire.search-pagination',[
'employees' => Employee::where('name','like', $searchTerm)->paginate(10)
]);
}
}
After that, Navigate to resources/views/livewire folder and open search-pagination.blade.php file. Then add the following code into search-pagination.blade.php file:
<div class="container">
<div class="row">
<div class="col-md-12">
<input type="text" class="form-control" placeholder="Search" wire:model="searchTerm" />
<table class="table table-bordered" style="margin: 10px 0 10px 0;">
<tr>
<th>Name</th>
<th>Email</th>
</tr>
@foreach($employees as $employee)
<tr>
<td>
{{ $employee->name }}
</td>
<td>
{{ $employee->email }}
</td>
</tr>
@endforeach
</table>
{{ $employees->links() }}
</div>
</div>
</div>
Step 6: Add Route
In this step, Navigate to routes folder and open web.php. Then add the following routes into web.php file:
Route::get('/search-with-pagination', function () {
return view('livewire.home');
});
Step 7: Create View File
In this step, navigate to resources/views/livewire folder and create one blade view files that name home.blade.php file. Then add the following code into home.blade.php file:
<!DOCTYPE html>
<html lang="{{ str_replace('_', '-', app()->getLocale()) }}">
<head>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1">
<title>Laravel 9 Livewire Search with Pagination - Tutsmake.com</title>
<!-- Fonts -->
<link href="https://fonts.googleapis.com/css?family=Nunito:200,600" rel="stylesheet">
<link rel="stylesheet" href="https://stackpath.bootstrapcdn.com/bootstrap/4.5.1/css/bootstrap.min.css">
<!-- Styles -->
<style>
html, body {
background-color: #fff;
color: #636b6f;
font-family: 'Nunito', sans-serif;
font-weight: 200;
height: 100vh;
margin: 0;
}
.full-height {
height: 100vh;
}
.flex-center {
align-items: center;
display: flex;
justify-content: center;
}
.position-ref {
position: relative;
}
.top-right {
position: absolute;
right: 10px;
top: 18px;
}
.content {
text-align: center;
}
.title {
font-size: 84px;
}
.links > a {
color: #636b6f;
padding: 0 25px;
font-size: 13px;
font-weight: 600;
letter-spacing: .1rem;
text-decoration: none;
text-transform: uppercase;
}
.m-b-md {
margin-bottom: 30px;
}
</style>
</head>
<body>
<div class="container mt-5">
<div class="row mt-5 justify-content-center">
<div class="mt-5 col-md-8">
<div class="card">
<div class="card-header bg-primary">
<h2 class="text-white">Laravel 9 Livewire Search with Pagination - Tutsmake.com</h2>
</div>
<div class="card-body">
@livewire('search-pagination')
</div>
</div>
</div>
</div>
</div>
@livewireScripts
</body>
</html>
Step 8: Run Development Server
Finally, we need to run the following PHP artisan serve command to start laravel livewire search with pagination example app:
php artisan serve If we want to run the project diffrent port so use this below command php artisan serve --port=8080
Now, we are ready to run laravel livewire search with pagination app. So open browser and hit the following URL into browser:
http://localhost:8000/search-with-pagination
We laravel livewire search with pagination app looks like:
Recommended Laravel Tutorials