Days
Hours
Minutes
Seconds

Promo Grand Opening

15% OFF

Khusus Pelanggan Baru

Tutorial Laravel #21 : CRUD Laravel Menggunakan Eloquent

 

 

Selamat datang kembali di seri tutorial Laravel! Pada tutorial sebelumnya, kita sudah mengenal Eloquent ORM dan kekuatannya dalam berinteraksi dengan database. Kini, saatnya kita mengaplikasikan pengetahuan tersebut untuk membuat aplikasi CRUD (Create, Read, Update, Delete) sederhana dan fungsional di Laravel.

Tutorial ini akan menggunakan Eloquent secara penuh untuk mengelola data mahasiswa, sehingga Anda tidak perlu menulis satu pun baris kode SQL.


 

Persiapan Awal

 

Pastikan Anda sudah memiliki hal-hal berikut:

  1. Proyek Laravel: Proyek Laravel Anda sudah berjalan dan terhubung ke database.
  2. Migration dan Model: Anda sudah memiliki tabel mahasiswa di database dan model Mahasiswa yang sesuai. Jika belum, Anda bisa membuatnya dengan cepat:
    • Migration: php artisan make:migration create_mahasiswa_table --create=mahasiswa
    • Model: php artisan make:model Mahasiswa

    Pastikan file Mahasiswa.php di app/Models/ memiliki $fillable yang sesuai:

    PHP

    protected $fillable = ['nama', 'nim', 'jurusan'];
    
  3. Controller: Buat controller baru untuk mengelola operasi CRUD:
    • php artisan make:controller MahasiswaController

 

Langkah 1: READ (Menampilkan Data)

 

Kita akan memulai dengan menampilkan semua data mahasiswa yang ada di database.

 

Controller

 

Buka file MahasiswaController.php dan tambahkan logika untuk menampilkan data.

PHP

<?php

namespace App\Http\Controllers;

use Illuminate\Http\Request;
use App\Models\Mahasiswa;

class MahasiswaController extends Controller
{
    public function index()
    {
        $mahasiswa = Mahasiswa::all(); // Mengambil semua data dari tabel mahasiswa
        return view('mahasiswa.index', compact('mahasiswa'));
    }
}
  • Mahasiswa::all(): Ini adalah metode Eloquent yang paling sederhana untuk mengambil semua data dari tabel mahasiswa.
  • compact('mahasiswa'): Fungsi ini membuat array dengan kunci mahasiswa dan nilai dari variabel $mahasiswa, yang kemudian kita kirimkan ke view.

 

View

 

Buat folder mahasiswa di dalam resources/views/ dan buat file index.blade.php di dalamnya.

resources/views/mahasiswa/index.blade.php

Blade

<!DOCTYPE html>
<html>
<head>
    <title>Data Mahasiswa</title>
</head>
<body>
    <center><h3>Data Mahasiswa</h3></center>
    <br/>
    <a href="{{ route('mahasiswa.create') }}">Tambah Data Baru</a>
    <br/>
    <br/>
    <table border="1">
        <thead>
            <tr>
                <th>Nama</th>
                <th>NIM</th>
                <th>Jurusan</th>
                <th>Aksi</th>
            </tr>
        </thead>
        <tbody>
            @foreach($mahasiswa as $m)
            <tr>
                <td>{{ $m->nama }}</td>
                <td>{{ $m->nim }}</td>
                <td>{{ $m->jurusan }}</td>
                <td>
                    <a href="{{ route('mahasiswa.edit', $m->id) }}">Edit</a>
                    <a href="{{ route('mahasiswa.destroy', $m->id) }}"
                       onclick="event.preventDefault(); document.getElementById('delete-form-{{$m->id}}').submit();">Hapus</a>

                    <form id="delete-form-{{$m->id}}" action="{{ route('mahasiswa.destroy', $m->id) }}" method="POST" style="display: none;">
                        @csrf
                        @method('DELETE')
                    </form>
                </td>
            </tr>
            @endforeach
        </tbody>
    </table>
</body>
</html>
  • @foreach($mahasiswa as $m): Kita mengulang variabel $mahasiswa yang dikirim dari controller.
  • {{ $m->nama }}: Mengakses kolom tabel seperti properti objek. Ini adalah keajaiban Eloquent!

 

Route

 

Terakhir, definisikan rute di routes/web.php.

PHP

use App\Http\Controllers\MahasiswaController;

Route::get('mahasiswa', [MahasiswaController::class, 'index'])->name('mahasiswa.index');

Sekarang, Anda bisa mengakses URL /mahasiswa di browser untuk melihat daftar data mahasiswa.


 

Langkah 2: CREATE (Menambah Data)

 

Sekarang, kita buat fitur untuk menambahkan data baru.

 

Controller

 

Tambahkan dua metode di MahasiswaController.php.

PHP

public function create()
{
    return view('mahasiswa.create');
}

public function store(Request $request)
{
    $request->validate([
        'nama' => 'required|max:255',
        'nim' => 'required|max:20|unique:mahasiswa',
        'jurusan' => 'required|max:255',
    ]);
    
    Mahasiswa::create($request->all()); // Simpan data ke database
    
    return redirect()->route('mahasiswa.index')->with('success', 'Data mahasiswa berhasil ditambahkan.');
}
  • create(): Metode ini hanya bertugas menampilkan form input.
  • store(): Metode ini memvalidasi input dari form, lalu menggunakan Mahasiswa::create() untuk menyimpan data. Metode ini sangat efisien karena langsung menggunakan semua data dari $request.

 

View

 

Buat file create.blade.php di dalam folder resources/views/mahasiswa/.

resources/views/mahasiswa/create.blade.php

Blade

<!DOCTYPE html>
<html>
<head>
    <title>Tambah Data Mahasiswa</title>
</head>
<body>
    <center><h3>Tambah Data Mahasiswa</h3></center>
    <br/>
    <a href="{{ route('mahasiswa.index') }}">Kembali</a>
    <br/>
    <br/>
    <form action="{{ route('mahasiswa.store') }}" method="POST">
        @csrf
        Nama: <input type="text" name="nama" required><br/>
        NIM: <input type="text" name="nim" required><br/>
        Jurusan: <input type="text" name="jurusan" required><br/>
        <input type="submit" value="Simpan Data">
    </form>
</body>
</html>

 

Route

 

Tambahkan rute baru di routes/web.php.

PHP

Route::get('mahasiswa/create', [MahasiswaController::class, 'create'])->name('mahasiswa.create');
Route::post('mahasiswa', [MahasiswaController::class, 'store'])->name('mahasiswa.store');

 

Langkah 3: UPDATE (Memperbarui Data)

 

Sekarang kita buat fitur untuk mengedit data.

 

Controller

 

Tambahkan dua metode lagi di MahasiswaController.php.

PHP

public function edit($id)
{
    $mahasiswa = Mahasiswa::find($id); // Mencari data berdasarkan ID
    return view('mahasiswa.edit', compact('mahasiswa'));
}

public function update(Request $request, $id)
{
    $request->validate([
        'nama' => 'required|max:255',
        'nim' => 'required|max:20',
        'jurusan' => 'required|max:255',
    ]);
    
    $mahasiswa = Mahasiswa::find($id);
    $mahasiswa->update($request->all()); // Perbarui data
    
    return redirect()->route('mahasiswa.index')->with('success', 'Data mahasiswa berhasil diperbarui.');
}
  • edit($id): Metode ini mengambil data berdasarkan ID dan mengirimkannya ke view.
  • update($id): Metode ini memvalidasi input, mencari data berdasarkan ID, dan menggunakan $mahasiswa->update() untuk memperbarui data.

 

View

 

Buat file edit.blade.php di resources/views/mahasiswa/.

resources/views/mahasiswa/edit.blade.php

Blade

<!DOCTYPE html>
<html>
<head>
    <title>Edit Data Mahasiswa</title>
</head>
<body>
    <center><h3>Edit Data Mahasiswa</h3></center>
    <br/>
    <a href="{{ route('mahasiswa.index') }}">Kembali</a>
    <br/>
    <br/>
    <form action="{{ route('mahasiswa.update', $mahasiswa->id) }}" method="POST">
        @csrf
        @method('PUT')
        Nama: <input type="text" name="nama" value="{{ $mahasiswa->nama }}" required><br/>
        NIM: <input type="text" name="nim" value="{{ $mahasiswa->nim }}" required><br/>
        Jurusan: <input type="text" name="jurusan" value="{{ $mahasiswa->jurusan }}" required><br/>
        <input type="submit" value="Update Data">
    </form>
</body>
</html>
  • @method('PUT'): Laravel menggunakan metode PUT atau PATCH untuk operasi update. Directive ini mengubah metode POST menjadi PUT.

 

Route

 

Tambahkan rute baru di routes/web.php.

PHP

Route::get('mahasiswa/{id}/edit', [MahasiswaController::class, 'edit'])->name('mahasiswa.edit');
Route::put('mahasiswa/{id}', [MahasiswaController::class, 'update'])->name('mahasiswa.update');

 

Langkah 4: DELETE (Menghapus Data)

 

Terakhir, kita buat fitur untuk menghapus data.

 

Controller

 

Tambahkan metode destroy di MahasiswaController.php.

PHP

public function destroy($id)
{
    $mahasiswa = Mahasiswa::find($id);
    $mahasiswa->delete(); // Hapus data
    
    return redirect()->route('mahasiswa.index')->with('success', 'Data mahasiswa berhasil dihapus.');
}
  • destroy($id): Metode ini mencari data berdasarkan ID dan menggunakan $mahasiswa->delete() untuk menghapusnya.

 

Route

 

Tambahkan rute untuk operasi delete di routes/web.php.

PHP

Route::delete('mahasiswa/{id}', [MahasiswaController::class, 'destroy'])->name('mahasiswa.destroy');

 

Kesimpulan

 

Menggunakan Eloquent untuk operasi CRUD di Laravel sangatlah efisien dan intuitif. Eloquent mempermudah semua operasi database, mulai dari mengambil data hingga memperbarui dan menghapusnya, tanpa perlu menulis query SQL secara manual. Kode menjadi lebih bersih, mudah dibaca, dan cepat dikembangkan.

Dengan menguasai operasi dasar CRUD ini, Anda sudah memiliki fondasi yang kuat untuk membangun aplikasi web yang lebih kompleks dengan Laravel.

Wawasan Terbaru

Gemini_Generated_Image_wfw5uwwfw5uwwfw5
Mengenal Dunia Grafis: Dari Piksel Hingga Vektor, Kekuatan Visual di Era Digital
Gemini_Generated_Image_b6dimfb6dimfb6di
Mengenal Foundation: Kerangka Kerja Front-End Profesional untuk Web Responsif
Gemini_Generated_Image_sx3ztpsx3ztpsx3z
CSS
Mempercantik Website dengan CSS: Seniman di Balik Tampilan Web 🎨
Gemini_Generated_Image_e013qke013qke013
Mengenal HTML: Fondasi dari Setiap Halaman Website 🌐
Gemini_Generated_Image_ldki4nldki4nldki
Menyelami Dunia Coding: Seni Berbicara dengan Komputer
Gemini_Generated_Image_dpvliydpvliydpvl
Menguasai GIT: Fondasi Penting dalam Dunia Pengembangan Perangkat Lunak
Gemini_Generated_Image_sqcib9sqcib9sqci
Tutorial Python #12: Mengenal Jenis-jenis Operator dalam Python
Gemini_Generated_Image_o1bw3do1bw3do1bw
Memahami Tipe Data Dictionary dalam Python
Gemini_Generated_Image_ko4ixfko4ixfko4i
Mengenal Tipe Data Set dalam Python
Gemini_Generated_Image_1xop7m1xop7m1xop
Tuple dalam Python: Pengenalan dan Tutorial

Wawasan Serupa

Gemini_Generated_Image_q0o3sbq0o3sbq0o3
Gemini_Generated_Image_mem6cgmem6cgmem6
Gemini_Generated_Image_ust09gust09gust0
Gemini_Generated_Image_d8a5kwd8a5kwd8a5

Ceritakan Detail Proyekmu

Mulai dari 30K aja, solusi IT kamu langsung jalan tanpa drama.

Kata Mereka Tentang Solusi Coding

Dipercaya oleh lebih dari 200++ client untuk menyelesaikan proyeknya dengan total 250++ proyek dari berbagai jenis proyek