andriajah Sat Apr 2022 1 year ago

Contoh Membuat Full Text Search di Laravel 9

Pada tutorial kali ini, kita akan membahas contoh pencarian full text laravel 9 scout. Anda dapat melihat contoh pencarian engine laravel 9. Anda akan mempelajari contoh laravel 9 scout elasticsearch. Di sini Anda akan belajar cara menambahkan pencarian teks lengkap di laravel 9 scout. Mari kita mulai dengan contoh mesin database scout laravel 9.

Laravel 9 menyediakan Paket Pramuka untuk pencarian teks lengkap dari proyek Anda. Jika Anda perlu menambahkan fungsi pencarian teks lengkap di aplikasi laravel 9 Anda, maka Anda harus memilih package scout untuk dilakukan.

Dalam contoh ini, kita akan menginstal package scout composer dan menggunakan driver database untuk pencarian teks lengkap. kemudian kita akan menggunakan pramuka dengan model Pengguna dan menambahkan kolom nama, email, dan id untuk pencarian teks lengkap. mari kita lihat langkah di bawah ini untuk membuat fungsi pencarian teks lengkap.

 

Langkah 1: Install Laravel 9

Ini opsional; namun, jika Anda belum membuat aplikasi laravel, Anda dapat melanjutkan dan menjalankan perintah di bawah ini:

composer create-project laravel/laravel example-app

Langkah 2: Install Scout

Pada langkah ini kita harus menginstal package scout dan kami akan mempublikasikannya:

composer require laravel/scout

Selanjutnya, kita harus mempublikasikan file konfigurasi kita. jadi Anda perlu menjalankan perintah di bawah ini:

php artisan vendor:publish --provider="Laravel\Scout\ScoutServiceProvider"

Sekarang kita perlu mengatur database konfigurasi sebagai driver di file env Anda:

.env

SCOUT_DRIVER=database

Langkah 3: Perbarui Model User

Di sini, kita sudah membuat tabel pengguna, jadi kita perlu menggunakan metode "Searchable" dan membuat toSearchableArray(). jadi mari kita perbarui kode berikut:

 

app/Model/User.php

<?php
  
namespace App\Models;
    
use Illuminate\Contracts\Auth\MustVerifyEmail;
use Illuminate\Database\Eloquent\Factories\HasFactory;
use Illuminate\Foundation\Auth\User as Authenticatable;
use Illuminate\Notifications\Notifiable;
use Laravel\Sanctum\HasApiTokens;
use Laravel\Scout\Searchable;
   
class User extends Authenticatable
{
    use HasApiTokens, HasFactory, Notifiable, Searchable;
  
    /**
     * The attributes that are mass assignable.
     *
     * @var array

     */
    protected $fillable = [
        'name',
        'email',
        'password'
    ];
  
    /**
     * The attributes that should be hidden for serialization.
     *
     * @var array

     */
    protected $hidden = [
        'password',
        'remember_token',
    ];
  
    /**
     * The attributes that should be cast.
     *
     * @var array

     */
    protected $casts = [
        'email_verified_at' => 'datetime',
    ];
  
    /**
     * Get the indexable data array for the model.
     *
     * @return array
     */
    public function toSearchableArray()
    {
        return [
            'name' => $this->name,
            'email' => $this->email
        ];
    }
}

Selanjutnya, kita akan membuat beberapa dummy record pada tabel users dan mengimpornya.

 

jadi mari kita jalankan perintah berikut:

Create Dummy Records:

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

Import Records:

php artisan scout:import "App\Models\User"

Langkah 4: Buat Controller UserController

Pada titik ini, sekarang kita harus membuat pengontrol baru sebagai UserController. Di pengontrol ini, kami akan menambahkan metode indeks, yang akan mengembalikan user dengan filter.

 

Mari perbarui kode berikut ke file controller Anda:

app/Http/Controllers/UserController.php

 

<?php
  
namespace App\Http\Controllers;
  
use Illuminate\Http\Request;
use App\Models\User;
  
class UserController extends Controller
{
    /**
     * Display a listing of the resource.
     *
     * @return \Illuminate\Http\Response
     */
    public function index(Request $request)
    {
        if($request->filled('search')){
            $users = User::search($request->search)->get();
        }else{
            $users = User::get();
        }
          
        return view('users', compact('users'));
    }
}

 

Langkah 5: Tambahkan Route

Pada langkah ini kita perlu membuat route untuk daftar user. jadi buka file "routes/web.php" Anda dan tambahkan route berikut.

 

routes/web.php

<?php
  
use Illuminate\Support\Facades\Route;
  
use App\Http\Controllers\UserController;
  
/*
|--------------------------------------------------------------------------
| 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('users', [UserController::class, 'index']);

 

Langkah 6: Buat Views

Pada langkah terakhir, mari kita buat users.blade.php(resources/views/users.blade.php) untuk layout dan kita akan menulis kode desain di sini dan memasukkan kode berikut:

 

resources/views/users.blade.php

<!DOCTYPE html>
<html>
<head>
    <title>Laravel 9 Scout Full Text Search Tutorial - Medikre.com</title>
    <link href="https://cdnjs.cloudflare.com/ajax/libs/twitter-bootstrap/5.0.1/css/bootstrap.min.css" rel="stylesheet">
</head>
<body>
      
<div class="container">
    <h1>Laravel 9 Scout Full Text Search Tutorial - Medikre.com</h1>
  
    <form method="GET">
        <div class="input-group mb-3">
          <input 
            type="text" 
            name="search" 
            value="{{ request()->get('search') }}" 
            class="form-control" 
            placeholder="Search..." 
            aria-label="Search" 
            aria-describedby="button-addon2">
          <button class="btn btn-success" type="submit" id="button-addon2">Search</button>
        </div>
    </form>
  
    <table class="table table-bordered data-table">
        <thead>
            <tr>
                <th>ID</th>
                <th>Name</th>
                <th>Email</th>
            </tr>
        </thead>
        <tbody>
            @foreach($users as $user)
            <tr>
                <td>{{ $user->id }}</td>
                <td>{{ $user->name }}</td>
                <td>{{ $user->email }}</td>
            </tr>
            @endforeach
        </tbody>
    </table>
</div>
    
</body>
    
</html>

 

Jalankan Aplikasi Laravel:

Semua langkah yang diperlukan telah dilakukan, sekarang Anda harus mengetikkan perintah yang diberikan di bawah ini dan tekan enter untuk menjalankan aplikasi Laravel:

php artisan serve

Sekarang, Buka browser web Anda, ketik URL yang diberikan:

http://localhost:8000/users

Mungkin bisa membantu anda.....

laravel laravel 9 tutorial full text search laravel example