Phone no: (021) 7989671 or email us: info@zahra-itsolution.com
Posted on 15 August 2024
Untuk memfilter data di Laravel, Anda bisa menggunakan berbagai teknik tergantung pada kebutuhan spesifik aplikasi Anda. Berikut adalah tutorial untuk memfilter data menggunakan query builder dan Eloquent ORM, serta penerapannya dalam Blade views.
Misalkan Anda memiliki model MataKuliah
dan tabel mata_kuliah
yang memiliki kolom kode
, nama
, dan deskripsi
.
Pastikan model MataKuliah
dan MataKuliahController sudah ada. Jika belum silahkan anda membuatnya terlebih dahulu, sesuaikan nama dengan proyek anda.
jika semua sudah ada dalam proyek anda maka anda bisa mengikuti langkah berikut.
Edit controller untuk menambahkan metode yang memfilter data. Misalkan kita ingin memfilter berdasarkan nama
mata kuliah.
Contoh untuk MataKuliahController.php:
<?php namespace App\Http\Controllers; use Illuminate\Http\Request; use App\Models\MataKuliah; class MataKuliahController extends Controller { public function index(Request $request) { $query = MataKuliah::query(); // Filter berdasarkan nama jika parameter 'nama' ada di request if ($request->filled('nama')) { $query->where('nama', 'like', '%' . $request->input('nama') . '%'); } // Menampilkan data dengan pagination $mataKuliah = $query->paginate(10); return view('matakuliah.index', compact('mataKuliah')); } }
Edit Blade view untuk menambahkan form filter. resources/views/sesuaikan nama view yang ingin anda tambahkan fitur filter.
resources/views/matakuliah/index.blade.php
<!DOCTYPE html> <html> <head> <title>Daftar Mata Kuliah</title> </head> <body> <!-- Form Filter --> <form method="GET" action="{{ route('matakuliah.index') }}"> <input type="text" name="nama" placeholder="Cari nama mata kuliah" value="{{ request()->input('nama') }}"> <button type="submit">Filter</button> </form> <!-- Tabel Data Mata Kuliah --> <table> <thead> <tr> <th>Kode</th> <th>Nama</th> <th>Deskripsi</th> </tr> </thead> <tbody> @foreach ($mataKuliah as $item) <tr> <td>{{ $item->kode }}</td> <td>{{ $item->nama }}</td> <td>{{ $item->deskripsi }}</td> </tr> @endforeach </tbody> </table> <!-- Pagination Links --> {{ $mataKuliah->links() }} </body> </html>
Model MataKuliah
: Menyediakan interaksi dengan tabel mata_kuliah
.
Controller MataKuliahController
:
index
Method: Mengambil data dari tabel mata_kuliah
dan menerapkan filter berdasarkan parameter yang diberikan (misalnya, nama). Data kemudian dipaginate untuk menampilkan 10 item per halaman.$query->where('nama', 'like', '%' . $request->input('nama') . '%')
: Menambahkan kondisi filter berdasarkan input dari form.Blade View:
matakuliah.index
.Dengan mengikuti tutorial ini, Anda dapat memfilter data yang ditampilkan di Blade views dan menggunakan pagination untuk mengelola data yang banyak