Panduan CRUD Sederhana dengan Laravel: Membuat Aplikasi Manajemen Tugas

dani indra

Dalam panduan ini, kita akan membuat aplikasi CRUD sederhana dengan Laravel untuk manajemen tugas. Aplikasi ini akan memungkinkan Anda untuk membuat, membaca, memperbarui, dan menghapus tugas (To-Do List) melalui antarmuka web. Ini adalah langkah-langkah dasar yang akan membantu Anda memahami konsep CRUD dalam Laravel.

Langkah 1: Persiapan Awal

Sebelum kita mulai, pastikan Anda telah menginstal Laravel dan memiliki proyek Laravel yang kosong yang sudah siap digunakan. Jika belum, Anda dapat mengikuti panduan instalasi Laravel di artikel sebelumnya.

Langkah 2: Membuat Model dan Migrasi

Langkah pertama adalah membuat model dan tabel dalam basis data untuk tugas-tugas kita. Jalankan perintah artisan berikut:

php artisan make:model Tugas -m

Perintah di atas akan membuat model Tugas beserta migrasi yang sesuai. Anda dapat menentukan kolom-kolom yang diperlukan dalam file migrasi tersebut.

Langkah 3: Mengubah Migrasi

Buka file migrasi yang baru saja dibuat dalam direktori database/migrations dan tambahkan kolom yang diperlukan. Sebagai contoh, kita akan menambahkan kolom nama dan deskripsi untuk mewakili tugas.

public function up()
{
    Schema::create('tugas', function (Blueprint $table) {
        $table->id();
        $table->string('nama');
        $table->text('deskripsi');
        $table->timestamps();
    });
}

Setelah menambahkan kolom, jalankan migrasi untuk membuat tabel dalam basis data:

php artisan migrate

Langkah 4: Membuat Kontroler

Selanjutnya, kita perlu membuat kontroler untuk mengelola tugas. Jalankan perintah berikut:

php artisan make:controller TugasController

Langkah 5: Membuat Rute

Buka file routes/web.php dan tambahkan rute-rute berikut:

use Illuminate\Support\Facades\Route;
use App\Http\Controllers\TugasController;

Route::get('/', [TugasController::class, 'index'])->name('tugas.index');
Route::get('/tugas/create', [TugasController::class, 'create'])->name('tugas.create');
Route::post('/tugas', [TugasController::class, 'store'])->name('tugas.store');
Route::get('/tugas/{id}', [TugasController::class, 'show'])->name('tugas.show');
Route::get('/tugas/{id}/edit', [TugasController::class, 'edit'])->name('tugas.edit');
Route::put('/tugas/{id}', [TugasController::class, 'update'])->name('tugas.update');
Route::delete('/tugas/{id}', [TugasController::class, 'destroy'])->name('tugas.destroy');

Langkah 6: Membuat Tampilan (View)

Selanjutnya, kita akan membuat tampilan (view) untuk aplikasi kita. Buat direktori resources/views/tugas dan tambahkan berikut:

index.blade.php

@extends('layouts.app')

@section('content')
<div class="container">
    <h2>Tugas</h2>
    <a href="{{ route('tugas.create') }}" class="btn btn-primary mb-2">Tambah Tugas</a>
    <table class="table">
        <thead>
            <tr>
                <th>Nama</th>
                <th>Deskripsi</th>
                <th>Aksi</th>
            </tr>
        </thead>
        <tbody>
            @foreach ($tugas as $t)
            <tr>
                <td>{{ $t->nama }}</td>
                <td>{{ $t->deskripsi }}</td>
                <td>
                    <a href="{{ route('tugas.show', $t->id) }}" class="btn btn-success">Lihat</a>
                    <a href="{{ route('tugas.edit', $t->id) }}" class="btn btn-warning">Edit</a>
                    <form action="{{ route('tugas.destroy', $t->id) }}" method="POST" style="display: inline;">
                        @csrf
                        @method('DELETE')
                        <button type="submit" class="btn btn-danger">Hapus</button>
                    </form>
                </td>
            </tr>
            @endforeach
        </tbody>
    </table>
</div>
@endsection

create.blade.php

@extends('layouts.app')

@section('content')
<div class="container">
    <h2>Tambah Tugas</h2>
    <form action="{{ route('tugas.store') }}" method="POST">
        @csrf
        <div class="form-group">
            <label for="nama">Nama</label>
            <input type="text" name="nama" class="form-control" required>
        </div>
        <div class="form-group">
            <label for="deskripsi">Deskripsi</label>
            <textarea name="deskripsi" class="form-control" required></textarea>
        </div>
        <button type="submit" class="btn btn-primary">Tambah</button>
    </form>
</div>
@endsection

show.blade.php

@extends('layouts.app')

@section('content')
<div class="container">
    <h2>Detail Tugas</h2>
    <p><strong>Nama:</strong> {{ $tugas->nama }}</p>
    <p><strong>Deskripsi:</strong> {{ $tugas->deskripsi }}</p>
    <a href="{{ route('tugas.index') }}" class="btn btn-secondary">Kembali</a>
</div>
@endsection

edit.blade.php

@extends('layouts.app')

@section('content')
<div class="container">
    <h2>Edit Tugas</h2>
    <form action="{{ route('tugas.update', $tugas->id) }}" method="POST">
        @csrf
        @method('PUT')
        <div class="form-group">
            <label for="nama">Nama</label>
            <input type="text" name="nama" class="form-control" value="{{ $tugas->nama }}" required>
        </div>
        <div class="form-group">
            <label for="deskripsi">Deskripsi</label>
            <textarea name="deskripsi" class="form-control" required>{{ $tugas->deskripsi }}</textarea>
        </div>
        <button type="submit" class="btn btn-primary">Simpan Perubahan</button>
    </form>
</div>
@endsection

Langkah 7: Membuat Kontroler

Buka file `app/Http/Controllers/TugasController.php

Leave a Comment