CRUD Data dengan Eloquent Laravel

Hai, Sobat Jagoan! Setelah kamu mengenal Eloquent Laravel dan melakukan persiapan awal melalui artikel Mengenal Eloquent Database pada Laravel, sekarang waktunya kamu menguji pemahaman kamu tentang Eloquent dengan membuat aplikasi sederhana CRUD data pengumuman. Ini lanjutan dari seri CRUD menggunakan Query Builder, tapi sekarang pakai Eloquent.

Cuss, langsung simak step-by-step CRUD Pengumuman dengan Eloquent, Sob!

Step 1: Membuat Model dan Migration

Seperti yang sudah disampaikan pada pembahasan artikel Mengenal Eloquent Database pada Laravel, kali ini akan membuat tabel melalui perintan artisan migrate di Laravel.

Pertama buat model dengan nama ‘Pengumuman’ melalui terminal.

				
					php artisan make:model Pengumuman -m
				
			

Output:

1-buat-model-pada-laravel

Setelah menjalankan perintah membuat model, Laravel otomatis membuat nama tabel pengumumen. Edit database/migrations/xxxx_xx_xx_xxxxxx_create_pengumumen_table.php

				
					public function up()
{
    Schema::create('pengumumen', function (Blueprint $table) {
        $table->id();
        $table->string('judul');
        $table->text('isi');
        $table->date('tanggal');
        $table->timestamps();
    });
}

				
			
2-edit-model-database-laravel

Catatan: Tapi, karena artikel kali ini akan membuat tabel bernama pengumuman, maka memerlukan tambahan properti $table = ‘pengumuman’; di dalam model untuk mendefinisikan nama tabel yang diinginkan. Simak caranya pada step 2.

Kemudian jalankan perintah migrasi database di terminal untuk membuat tabel pengumumen. Perintah ini akan langsung menambahkan tabel baru di dalam database db_perpustakaan.

				
					php artisan migrate
				
			
3-php-artisan-migrate

Step 2: Mengedit Model app/Models/Pengumuman.php

Modifikasi model Pengumuman.php sesuai kebutuhan dan tambahkan properti $table = ‘pengumuman’; untuk mendefinisikan tabel yang diinginkan.

				
					namespace App\Models;

use Illuminate\Database\Eloquent\Model;

class Pengumuman extends Model
{
    protected $table = 'pengumuman';
    protected $fillable = ['judul', 'isi', 'tanggal'];
}

				
			
4-edit-model-data-pengumuman-laravel

Step 3: Membuat Controller

Setelah membuat model dan melakukan migrasi, buat controller yang mengatur logika interaksi data, melalui terminal menggunakan perintah:

				
					php artisan make:controller PengumumanController
				
			

Kemudian edit isi PengumumanController.php di dalam folder app/Http/Controllers/

				
					namespace App\Http\Controllers;

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

class PengumumanController extends Controller
{

    // MENAMPILKAN DATA PENGUMUMAN
    public function index()
    {
        $data = Pengumuman::all();
        return view('pengumuman.index', compact('data'));
    }

    // MENAMPILKAN FORM PENGUMUMAN
    public function create()
    {
        return view('pengumuman.create');
    }

    // MENGHANDLE PROSES TAMBAH PENGUMUMAN BARU
    public function store(Request $request)
    {
        Pengumuman::create($request->all());
        return redirect('/pengumuman');
    }

    // MENAMPILKAN FORM EDIT PENGUMUMAN BERDASARKAN ID
    public function edit($id)
    {
        $pengumuman = Pengumuman::findOrFail($id);
        return view('pengumuman.edit', compact('pengumuman'));
    }

    // MENGHANDLE PROSES EDIT DATA PENGUMUMAN
    public function update(Request $request, $id)
    {
        $pengumuman = Pengumuman::findOrFail($id);
        $pengumuman->update($request->all());
        return redirect('/pengumuman');
    }

    // MENGHAPUS DATA PENGUMUMAN BERDASARKAN ID
    public function destroy($id)
    {
        Pengumuman::destroy($id);
        return redirect('/pengumuman');
    }
}

				
			

Step 4: Tambahkan Route di routes/web.php

Setelah membuat controller, atur rute untuk menampilkan pengumuman.

				
					use App\Http\Controllers\PengumumanController;

Route::get('/pengumuman', [PengumumanController::class, 'index']);
Route::get('/pengumuman/create', [PengumumanController::class, 'create']);
Route::post('/pengumuman', [PengumumanController::class, 'store']);
Route::get('/pengumuman/{id}/edit', [PengumumanController::class, 'edit']);
Route::put('/pengumuman/{id}', [PengumumanController::class, 'update']);
Route::delete('/pengumuman/{id}', [PengumumanController::class, 'destroy']);

				
			

Step 5: Membuat View di resources/views/pengumuman

Buat dahulu folder pengumuman di dalam resources/views/ kemudian buat file dan salin satu per satu kode sesuai ketentuan di bawah ini.

  • index.blade.php yang menampilkan daftar pengumuman.

<!DOCTYPE html>

<html>

<head>

    <title>Daftar Pengumuman</title>

</head>

<body>

 

    <h2>Daftar Pengumuman</h2>

    <a href=”/pengumuman/create”>+ Tambah Pengumuman</a>

    <br><br>

 

    <table border=”1″ cellpadding=”8″ cellspacing=”0″>

        <thead>

            <tr>

                <th>Judul</th>

                <th>Isi</th>

                <th>Tanggal</th>

                <th>Aksi</th>

            </tr>

        </thead>

        <tbody>

            @foreach ($data as $p)

            <tr>

                <td>{{ $p->judul }}</td>

                <td>{{ $p->isi }}</td>

                <td>{{ $p->tanggal }}</td>

                <td>

                    <a href=”/pengumuman/{{ $p->id }}/edit”>Edit</a> |

                    <form action=”/pengumuman/{{ $p->id }}” method=”POST” style=”display:inline;”>

                        @csrf

                        @method(‘DELETE’)

                        <button type=”submit” onclick=”return confirm(‘Yakin ingin menghapus?’)”>Hapus</button>

                    </form>

                </td>

            </tr>

            @endforeach

        </tbody>

    </table>

 

</body>

</html>

  • create.blade.php bagian yang menampilkan form tambah pengumuman.

<!DOCTYPE html>

<html>

<head>

    <title>Tambah Pengumuman</title>

</head>

<body>

 

    <h2>Tambah Pengumuman</h2>

    <a href=”/pengumuman”>← Kembali ke Daftar</a>

    <br><br>

 

    <form action=”/pengumuman” method=”POST”>

        @csrf

        <label>Judul:</label><br>

        <input type=”text” name=”judul” required><br><br>

 

        <label>Isi:</label><br>

        <textarea name=”isi” rows=”4″ cols=”40″ required></textarea><br><br>

 

        <label>Tanggal:</label><br>

        <input type=”date” name=”tanggal” required><br><br>

 

        <button type=”submit”>Simpan</button>

    </form>

 

</body>

</html>

  • edit.blade.php untuk menampilkan form edit pengumuman.

<!DOCTYPE html>

<html>

<head>

    <title>Edit Pengumuman</title>

</head>

<body>

 

    <h2>Edit Pengumuman</h2>

    <a href=”/pengumuman”>← Kembali ke Daftar</a>

    <br><br>

 

    <form action=”/pengumuman/{{ $pengumuman->id }}” method=”POST”>

        @csrf

        @method(‘PUT’)

 

        <label>Judul:</label><br>

        <input type=”text” name=”judul” value=”{{ $pengumuman->judul }}” required><br><br>

 

        <label>Isi:</label><br>

        <textarea name=”isi” rows=”4″ cols=”40″ required>{{ $pengumuman->isi }}</textarea><br><br>

 

        <label>Tanggal:</label><br>

        <input type=”date” name=”tanggal” value=”{{ $pengumuman->tanggal }}” required><br><br>

 

        <button type=”submit”>Update</button>

    </form>

 

</body>

</html>

Step 6: Jalankan Aplikasi

Buka terminal lalu jalankan aplikasi menggunakan perintah:

				
					php artisan serve
				
			

Akses http://127.0.0.1:8000/pengumuman di browser kamu.

5-akses-url-pengumuman-crud-eloquent-laravel

Coba tambah pengumuman baru, edit, dan hapus data pengumuman untuk menguji aplikasi sudah berjalan dengan baik.

6-crud-database-eloquent-laravel

Troubleshooting

Kalau kamu menemukan error: SQLSTATE[42S02]: Base table or view not found: 1146 Table ‘db_kb_perpustakaan.pengumuman’ doesn’t exist

Ini masih karena migrasi database yang otomatis merename tabel pengumuman yang ingin dibuat diawal menjadi pengumumen. Buka tabel migrasi pada database/migrations/xxxx_xx_xx_xxxxxx_create_pengumumen_table.php. Kemudian ubah migration di bagian:

				
					Schema::create('pengumumen', function (Blueprint $table) {
				
			

menjadi:

				
					Schema::create('pengumuman', function (Blueprint $table) {
				
			

Lalu, jalankan ulang migrasi:

				
					php artisan migrate:rollback
php artisan migrate

				
			

ATAU jika tidak mau rollback semua, hapus tabel pengumumen langsung dari database, lalu jalankan ulang migration setelah kamu ubah nama tabelnya.

Selamat mencoba, Sob! Dengan mempraktikkan dan memahami langkah-langkah membuat CRUD menggunakan Eloquent Laravel pada artikel ini, kamu kini punya bekal untuk membangun dan mengelola aplikasi yang lebih terstruktur, efisien, dan mudah dikembangkan ke depannya.

Kalau ada yang masih bingung, silahkan hubungi Tim Support Jagoan Hosting, Sob!

Simak terus tips-tips seputar domain dan hosting dari Jagoan Hosting di laman Pusat Tutorial Hosting & Domain.

Related Posts
Tips Mengatasi Error Undefined Index / Variable

Pengantar Halo sobat Jagoan! di tutorial kali ini kita bakalan membahas permasalahan Error Undefined Index/Variable. Pasti sekarang kamu lagi main-main Read more

Tutorial Mengecek Kendala pada Website dengan Tools Online

Halo, Sob! Suka bingung kalau mau cek kendala website kamu? Nih, gak usah bingung lagi karena sekarang kita bisa cek Read more

Cara Mengatasi Akses Website yang Lambat ataupun Sulit Diakses

Banyak sekali hal yang terjadi ketika kita sedang mengakses suatu website, seperti halnya akses lambat sampai bahkan sulit diakses. Disitu Read more

Mengenal Jenis-Jenis Internal Server Error

Kode internal server error adalah salah satu kondisi yang sering dijumpai pemilik dan pengunjung website. Apakah kamu juga salah satunya? Read more