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