andriajah Wed Jul 2023 9 months ago

Tutorial Laravel 10 Scout Full Text Search

Hari ini, saya akan memberi tahu Anda contoh contoh pencarian teks lengkap pramuka laravel 10. Anda akan mempelajari contoh pencarian pramuka laravel 10. Anda akan mempelajari contoh pencarian elastis pramuka laravel 10. jika anda ingin melihat contoh cara menambahkan full text search di laravel 10 scout maka anda berada di tempat yang tepat.

Laravel 10 menyediakan Scout Package untuk pencarian teks lengkap dari proyek Anda. Jika Anda perlu menambahkan fungsi pencarian teks lengkap di aplikasi laravel 10 Anda, maka Anda harus memilih paket scout untuk melakukannya.

Dalam contoh ini, kita akan menginstal paket scout composer dan menggunakan driver database untuk full text search. selanjutnya kita akan menggunakan scout dengan model User dan menambahkan kolom nama, email, dan id untuk full text search. mari kita lihat langkah di bawah ini untuk membuat fungsi pencarian teks lengkap.

Langkah 1: Instal Laravel 10

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: Instal Scout

Pada langkah ini kita harus menginstal paket scout dan kami akan menerbitkannya:

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 users, jadi kita perlu menggunakan metode "Searchable" dan membuat toSearchableArray() . jadi mari perbarui kode berikut:

 

app/Models/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 pengguna dengan filter.

Mari perbarui kode berikut ke file pengontrol Anda:

app/Http/Controllers/UserController.php

<?php
  
namespace App\Http\Controllers;
  
use Illuminate\Http\Request;
use App\Models\User;
use Illuminate\View\View;
  
class UserController extends Controller
{
    /**
     * Display a listing of the resource.
     *
     * @return \Illuminate\Http\Response
     */
    public function index(Request $request): View
    {
        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 mendaftar pengguna. 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 View

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

resources/views/users.blade.php

<!DOCTYPE html>
<html>
<head>
    <title>Laravel 10 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 10 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>

 

Run Laravel App:

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

php artisan serve

Sekarang, Buka browser web Anda, ketik URL yang diberikan dan lihat keluaran aplikasi:

http://localhost:8000/users

Mungkin bisa membantu anda.....

laravel