CRUD adalah singkatan dari Create, Read, Update, dan Delete, yang merupakan operasi dasar yang harus didukung oleh setiap aplikasi berbasis database. Laravel, sebagai salah satu framework PHP paling populer, menyediakan alat dan fitur yang memudahkan pengembang untuk membangun aplikasi CRUD dengan cepat dan efisien. Artikel ini akan memberikan panduan langkah demi langkah untuk membangun aplikasi CRUD menggunakan Laravel.
Sebelum memulai, pastikan bahwa lingkungan pengembangan sudah siap. Berikut adalah beberapa alat dan perangkat lunak yang perlu diinstal:
composer global require laravel/installer
.Baca Juga : Tutorial Install Composer
Setelah semua alat di atas terpasang, kita siap untuk memulai pembangunan aplikasi.
Langkah 1: Membuat Proyek Laravel Baru
Langkah pertama adalah membuat proyek Laravel baru. Gunakan perintah berikut untuk membuat proyek baru:
cd C:\XAMPP/htdocs/
laravel new nama-proyek
Setelah proyek berhasil dibuat, masuk ke direktori proyek dengan perintah :
cd nama-proyek
Langkah 2: Konfigurasi Database
Setelah membuat proyek, langkah berikutnya adalah mengonfigurasi database. Buka file .env
di root proyek dan sesuaikan pengaturan database sesuai dengan konfigurasi lokal Anda:
DB_CONNECTION=mysql
DB_HOST=127.0.0.1
DB_PORT=3306
DB_DATABASE=nama_database
DB_USERNAME=user_database
DB_PASSWORD=password_database
Jangan lupa untuk membuat database yang sesuai di server database Anda.
Langkah 3: Membuat Model dan Migrasi
Laravel memudahkan pembuatan tabel database melalui fitur migrasi. Kita akan membuat model beserta migrasinya untuk entitas yang kita kelola, misalnya Post
:
php artisan make:model Post -m
Perintah ini akan membuat model Post
dan file migrasi untuk tabel posts
. Buka file migrasi di database/migrations/
dan tambahkan kolom yang diperlukan:
public function up()
{
Schema::create('posts', function (Blueprint $table) {
$table->id();
$table->string('title');
$table->text('content');
$table->timestamps();
});
}
Setelah itu, jalankan migrasi dengan perintah berikut untuk membuat tabel posts
:
php artisan migrate
Langkah 4: Membuat Controller
Selanjutnya, kita akan membuat controller yang akan menangani operasi CRUD. Gunakan perintah berikut untuk membuat controller:
php artisan make:controller PostController --resource
Controller PostController
ini sudah berisi metode dasar untuk operasi CRUD seperti index
, create
, store
, show
, edit
, update
, dan destroy
.
Langkah 5: Membuat View dan Routing
Laravel menggunakan Blade sebagai templating engine untuk membuat tampilan. Buat file view di direktori resources/views
untuk setiap operasi CRUD (misalnya index.blade.php
, create.blade.php
, dll.). Sesuaikan setiap view dengan kebutuhan tampilan aplikasi.
Kemudian, tambahkan rute di routes/web.php
untuk menghubungkan controller dengan URL aplikasi:
Route::resource('posts', PostController::class);
Dengan rute ini, Laravel secara otomatis membuat rute untuk semua operasi CRUD yang sesuai dengan metode di PostController
.
Langkah 6: Implementasi Operasi CRUD di Controller
Sekarang, kita perlu mengisi setiap metode di PostController
untuk menangani logika CRUD. Sebagai contoh, berikut adalah implementasi untuk menyimpan data baru ke database:
public function index()
{
// Mengambil semua data post dari database
$posts = Post::paginate(10); // Menggunakan pagination
// Mengirim data post ke view
return view('posts.index', compact('posts'));
}
public function create()
{
// Menampilkan form create
return view('posts.create');
}
public function store(Request $request)
{
// Validasi input data
$validated = $request->validate([
'title' => 'required|max:255',
'content' => 'required',
]);
// Menyimpan data ke database
Post::create($validated);
// Redirect ke halaman index dengan pesan sukses
return redirect()->route('posts.index')->with('success', 'Post berhasil ditambahkan');
}
public function store(Request $request)
{
// Validasi input data
$validated = $request->validate([
'title' => 'required|max:255',
'content' => 'required',
]);
// Menyimpan data ke database
Post::create($validated);
// Redirect ke halaman index dengan pesan sukses
return redirect()->route('posts.index')->with('success', 'Post berhasil ditambahkan');
}
public function edit($id)
{
// Mengambil data post berdasarkan ID
$post = Post::findOrFail($id);
// Menampilkan form edit dengan data post
return view('posts.edit', compact('post'));
}
public function update(Request $request, $id)
{
// Validasi input data
$validated = $request->validate([
'title' => 'required|max:255',
'content' => 'required',
]);
// Mengambil data post berdasarkan ID
$post = Post::findOrFail($id);
// Memperbarui data post
$post->update($validated);
// Redirect ke halaman index dengan pesan sukses
return redirect()->route('posts.index')->with('success', 'Post berhasil diperbarui');
}
public function destroy($id)
{
// Mengambil data post berdasarkan ID
$post = Post::findOrFail($id);
// Menghapus post dari database
$post->delete();
// Redirect ke halaman index dengan pesan sukses
return redirect()->route('posts.index')->with('success', 'Post berhasil dihapus');
}
Lakukan hal yang sama untuk metode lainnya (index
, show
, edit
, update
, dan destroy
) untuk mengelola data Post
.
Tambahkan view index.blade.php
, create.blade.php
, dan edit.blade.php
yang dapat digunakan dalam aplikasi Laravel untuk mengelola data Post
.
View index.blade.php :
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Daftar Post</title>
<link rel="stylesheet" href="{{ asset('css/app.css') }}">
</head>
<body>
<div class="container mt-5">
<h1>Daftar Post</h1>
<!-- Pesan sukses -->
@if(session('success'))
<div class="alert alert-success">
{{ session('success') }}
</div>
@endif
<!-- Tombol untuk menambah post baru -->
<a href="{{ route('posts.create') }}" class="btn btn-primary mb-3">Tambah Post Baru</a>
<!-- Tabel untuk menampilkan daftar post -->
<table class="table table-bordered">
<thead>
<tr>
<th>No</th>
<th>Judul</th>
<th>Konten</th>
<th>Aksi</th>
</tr>
</thead>
<tbody>
@foreach($posts as $post)
<tr>
<td>{{ $loop->iteration }}</td>
<td>{{ $post->title }}</td>
<td>{{ Str::limit($post->content, 50) }}</td>
<td>
<!-- Tombol aksi untuk melihat, mengedit, dan menghapus post -->
<a href="{{ route('posts.show', $post->id) }}" class="btn btn-info">Lihat</a>
<a href="{{ route('posts.edit', $post->id) }}" class="btn btn-warning">Edit</a>
<form action="{{ route('posts.destroy', $post->id) }}" method="POST" style="display:inline;">
@csrf
@method('DELETE')
<button type="submit" class="btn btn-danger" onclick="return confirm('Apakah Anda yakin ingin menghapus post ini?');">Hapus</button>
</form>
</td>
</tr>
@endforeach
</tbody>
</table>
<!-- Pagination -->
{{ $posts->links() }}
</div>
</body>
</html>
View create.blade.php :
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Tambah Post Baru</title>
<link rel="stylesheet" href="{{ asset('css/app.css') }}">
</head>
<body>
<div class="container mt-5">
<h1>Tambah Post Baru</h1>
<!-- Form untuk menambah post -->
<form action="{{ route('posts.store') }}" method="POST">
@csrf
<!-- Input untuk judul post -->
<div class="form-group">
<label for="title">Judul</label>
<input type="text" name="title" class="form-control" id="title" value="{{ old('title') }}">
@error('title')
<div class="text-danger">{{ $message }}</div>
@enderror
</div>
<!-- Input untuk konten post -->
<div class="form-group">
<label for="content">Konten</label>
<textarea name="content" class="form-control" id="content">{{ old('content') }}</textarea>
@error('content')
<div class="text-danger">{{ $message }}</div>
@enderror
</div>
<!-- Tombol untuk submit form -->
<button type="submit" class="btn btn-primary">Simpan</button>
</form>
</div>
</body>
</html>
View edit.blade.php :
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Edit Post</title>
<link rel="stylesheet" href="{{ asset('css/app.css') }}">
</head>
<body>
<div class="container mt-5">
<h1>Edit Post</h1>
<!-- Form untuk mengedit post -->
<form action="{{ route('posts.update', $post->id) }}" method="POST">
@csrf
@method('PUT')
<!-- Input untuk judul post -->
<div class="form-group">
<label for="title">Judul</label>
<input type="text" name="title" class="form-control" id="title" value="{{ old('title', $post->title) }}">
@error('title')
<div class="text-danger">{{ $message }}</div>
@enderror
</div>
<!-- Input untuk konten post -->
<div class="form-group">
<label for="content">Konten</label>
<textarea name="content" class="form-control" id="content">{{ old('content', $post->content) }}</textarea>
@error('content')
<div class="text-danger">{{ $message }}</div>
@enderror
</div>
<!-- Tombol untuk submit form -->
<button type="submit" class="btn btn-primary">Simpan Perubahan</button>
</form>
</div>
</body>
</html>
Jangan lupa untuk menambahkan file dan code untuk cssnya, buat file bernama app.css :
/* General Styles */
body {
font-family: 'Arial', sans-serif;
background-color: #f4f4f4;
color: #333;
margin: 0;
padding: 0;
}
.container {
max-width: 800px;
margin: 0 auto;
padding: 20px;
background-color: #fff;
box-shadow: 0 0 10px rgba(0, 0, 0, 0.1);
}
/* Heading Styles */
h1 {
font-size: 2em;
margin-bottom: 20px;
color: #444;
}
/* Table Styles */
table {
width: 100%;
border-collapse: collapse;
margin-bottom: 20px;
}
table, th, td {
border: 1px solid #ddd;
}
th, td {
padding: 10px;
text-align: left;
}
th {
background-color: #f4f4f4;
font-weight: bold;
}
/* Button Styles */
.btn {
display: inline-block;
padding: 10px 15px;
font-size: 1em;
color: #fff;
text-align: center;
text-decoration: none;
border-radius: 5px;
margin-right: 5px;
}
.btn-primary {
background-color: #007bff;
}
.btn-primary:hover {
background-color: #0056b3;
}
.btn-info {
background-color: #17a2b8;
}
.btn-info:hover {
background-color: #117a8b;
}
.btn-warning {
background-color: #ffc107;
}
.btn-warning:hover {
background-color: #e0a800;
}
.btn-danger {
background-color: #dc3545;
}
.btn-danger:hover {
background-color: #c82333;
}
/* Form Styles */
.form-group {
margin-bottom: 15px;
}
label {
display: block;
font-weight: bold;
margin-bottom: 5px;
}
input[type="text"],
textarea {
width: 100%;
padding: 10px;
border: 1px solid #ddd;
border-radius: 5px;
box-sizing: border-box;
}
input[type="text"]:focus,
textarea:focus {
border-color: #007bff;
outline: none;
}
textarea {
height: 150px;
}
/* Alert Styles */
.alert {
padding: 10px;
color: #fff;
margin-bottom: 20px;
border-radius: 5px;
}
.alert-success {
background-color: #28a745;
}
.text-danger {
color: #dc3545;
font-size: 0.9em;
}
Demikian panduan langkah-langkah CRUD sederhana dengan laravel, baca Artikel lainya di RuangBacaku