Membuat Form Pencarian Data pada Laravel 8

Sebelumnya sudah dibahas tentang bagaimana cara membuat paginasi di laravel, selanjutnya kita akan belajar bagaimana membuat halaman pencarian ataupun program untuk pencarian data dengan laravel, dimana dalam kasus kali ini data yang dicari merupakan data yang berada dalam tabel sebelumnya berdasarkan nama pegawai, kemudian ketika data ditemukan, maka data juga akan ditampilkan dalam bentuk tabel. 

Membuat Form Pencarian Data pada Laravel 8

Untuk lebih jelasnya Anda bisa mengikuti langkah – langkah berikut :

Saya asumsikan bahwa disini Anda sudah memiliki daftar data yang akan digunakan untuk proses pencarian, atau Anda sudah melihat contoh kode sebelumnya, karena kode contoh kode yang digunakan disini merupakan kelanjutan dari contoh kode sebelumnya tentang crud laravel

  1. Pertama tambahkan sebuah function cari pada controllers masing – masing seperti berikut : 
      
         public function cari(Request $request)
        {
            $cari = $request->cari;
            $pegawai = DB::table('pegawai')->where('nama_lengkap','like',"%".$cari."%")->paginate();
    
            //atau bisa juga seperti ini
            //$pegawai = DB::table('pegawai')->where('nama_lengkap','like',"%".request('cari')."%")->paginate();
            return view('pegawai_table',['pegawai'=>$pegawai]);
        }
      
      
       
  2. Sehingga nanti kode controller keselurhan Anda akan terlihat seperti berikut :
      
      <?php
    
    namespace App\Http\Controllers;
    
    use Illuminate\Http\Request;
    use Illuminate\Support\Facades\DB;
    
    class Pegawai extends Controller
    {
        public function index()
        {
            $pegawai = DB::table('pegawai')->paginate(10);
            //menampilkan data sebanyak 10 perhalaman
            return view('pegawai_table',['pegawai'=>$pegawai]);
        }
        public function create()
        {
            return view('pegawai_create');
        }
        public function proses(Request $request)
        {
            DB::table('pegawai')->insert([
    
                'nama_lengkap'=>$request->nama,
                'jabatan'=>$request->jabatan,
                'umur'=>$request->umur,
                'alamat'=>$request->alamat
            ]);
            return redirect('/pegawai');
        }
        public function edit($id)
        {
            $pegawai = DB::table('pegawai')->where('id', $id)->get();
            return view('pegawai_edit',['pegawai'=>$pegawai]);
        }
        public function update(Request $request)
        {
            DB::table('pegawai')->where('id',$request->id)->update([
    
                'nama_lengkap'=>$request->nama,
                'jabatan'=>$request->jabatan,
                'umur'=>$request->umur,
                'alamat'=>$request->alamat
            ]);
            return redirect('/pegawai');
        }
        public function delete($id)
        {
            DB::table('pegawai')->where('id',$id)->delete();
            return redirect('/pegawai');
        }
        public function cari(Request $request)
        {
            $cari = $request->cari;
            $pegawai = DB::table('pegawai')->where('nama_lengkap','like',"%".$cari."%")->paginate();
            return view('pegawai_table',['pegawai'=>$pegawai]);
        }
    }
    
      
      
  3. Terakhir tambahkan url  pegawai/cari pada file web.php 
      
      <!DOCTYPE html>
    <html>
    <head>
    	<meta charset="utf-8">
    	<meta name="viewport" content="width=device-width, initial-scale=1">
    	<title> Daftar Pegawai</title>
    	<link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/bootstrap@4.0.0/dist/css/bootstrap.min.css">
    </head>
    <body>
    
    	<div class="container">
    		<h3 class="text-center">Data Pegawai</h3>
    			<div class="container-fluid">
    				<div class="row">
    
    					<form action="/pegawai/cari" method="GET">
    						<input type="text" name="cari" placeholder="Cari pegawai..." value="{{request('cari')}}"> <input type="submit" value="CARI">
    					</form>
    					<br/>
    					<br/>
    					<table class="table table-bordered table-striped table-hover">
    						
    							<tr>
    								<th>ID</th>
    								<th>Nama</th>
    								<th>Jabatan</th>
    								<th>Umur</th>
    								<th>Alamat</th>
    								<th>Aksi</th>
    							</tr>
    							@foreach($pegawai as $data)
    							<tr>
    								<td>{{$data->id}}</td>
    								<td>{{$data->nama_lengkap}}</td>
    								<td>{{$data->jabatan}}</td>
    								<td>{{$data->umur}}</td>
    								<td>{{$data->alamat}}</td>
    								<td><a href="/pegawai/edit/{{$data->id}}">Edit</a> / <a href="/pegawai/delete/{{$data->id}}">Delete</a></td>
    							</tr>
    							@endforeach
    							<tr>
    								<td colspan="6"><a href="/pegawai/create">Tambah Pegawai</a></td>
    							</tr>
    					</table>
    
    					
    					
    						<p>Halaman : {{$pegawai->currentPage()}} / Jumlah Data : {{$pegawai->total()}} / Data perhalaman :{{$pegawai->perPage()}}<br/></p>	
    				</div>
    				
    			
    
    
    
    				<div class="d-flex">
    				    <div class="mx-auto">
    				    	{{$pegawai->links()}}
    					</div>
    				</div>
    			</div>
    	</div>
    
    
    </body>
    </html>
      
      

Jika berhasil, maka nanti halaman pencariannya akan terlihat seperti berikut ini

cara mudah membuat form pencarian data di laravel 8


Dalam prameter pencarian, Anda sebenarnya bisa menggunakan beberapa jenis variasi, misalnya Anda bisa langsung mendapatkan nilai keyword pencarian tanpa harus menyimpannya terlebih dahulu kedalam variabel maka Anda bisa gunakan nilai request() seperti contoh dibawah ini



$pegawai = DB::table('pegawai')->where('nama_lengkap','like',"%".request('cari')."%")
        ->paginate();
        return view('pegawai_table',['pegawai'=>$pegawai]);

Selanjutnya Anda juga bisa menggunakan parameter orWhere untuk mencari keyword lain didalam kolom tabel, kalau sebelumnya data yang dicari berdasarkan nama_lengkap, maka Anda bisa menambahkan pencarian berdasarkan data dari dua kolom yaitu nama_lengkap dan jabatan seperti contoh berikut


$pegawai = DB::table('pegawai')->where('nama_lengkap','like',"%".request('cari')."%")
        ->orWhere('jabatan','like',"%".request('cari')."%")
        ->paginate();
        return view('pegawai_table',['pegawai'=>$pegawai]);

Jika data ataupun keyword yang dicari tidak ditemukan dalam database dan Anda ingin menampilkan atau menyampaikan pesan ke pengguna bahwa data tersebut tidak ditemukan, maka pada file blade atau disini pada file pegawai_table.blade.php atau bisa menggunakan paramter perintah @forelse seperti berikut ini


@forelse($pegawai as $data)
	<tr>
	<td>{{$data->id}}</td>
	<td>{{$data->nama_lengkap}}</td>
	<td>{{$data->jabatan}}</td>
	<td>{{$data->umur}}</td>
	<td>{{$data->alamat}}</td>
	<td><a href="/pegawai/edit/{{$data->id}}">Edit</a> / <a href="/pegawai/delete/{{$data->id}}">Delete</a></td>
							</tr>
	@empty
		<tr>
			<td colspan="6">Data tidak ditemukan</td>
			</tr>
	@endforelse

Baca Selanjutnya : Cara Membuat Validasi Input Laravel

0 Response to "Membuat Form Pencarian Data pada Laravel 8"

Post a Comment

Komentar yang Anda kirim akan terlebih dahulu di moderasi oleh Admin