Membangun Proyek CRUD
Dalam tutorial ini, kita akan membahas cara membangun aplikasi CRUD (Create, Read, Update, Delete) menggunakan Laravel. Mari kita mulai langkah demi langkah.
Prerequisites
Sebelum kita mulai, pastikan Anda sudah memenuhi syarat berikut:
- PHP (versi terbaru)
- Composer
- Laravel (versi terbaru)
- Database (MySQL, SQLite, dsb.)
Langkah 1: Membuat Proyek Laravel Baru
Buka terminal Anda dan jalankan perintah berikut untuk membuat proyek Laravel baru:
composer create-project --prefer-dist laravel/laravel laravel-crud
Setelah proyek selesai dibuat, navigasikan ke direktori proyek:
cd laravel-crud
Langkah 2: Konfigurasi Database
Buka file .env
dan sesuaikan konfigurasi database Anda sesuai dengan detail database yang Anda miliki:
DB_CONNECTION=mysql
DB_HOST=127.0.0.1
DB_PORT=3306
DB_DATABASE=nama_database
DB_USERNAME=username
DB_PASSWORD=password
Setelah melakukan perubahan, simpan file tersebut.
Langkah 3: Membuat Migration dan Model
Kita akan membuat model dan migration untuk entitas yang akan kita kelola. Misalnya, kita akan membuat model Post
.
Jalankan perintah berikut:
php artisan make:model Post -m
Perintah ini akan membuat model Post
dan migration untuk tabel posts
. Buka file migration yang baru dibuat 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 menambahkan kolom, jalankan migration dengan perintah berikut:
php artisan migrate
Langkah 4: Membuat Controller
Selanjutnya, kita perlu membuat controller untuk mengelola logika CRUD. Jalankan perintah berikut untuk membuat controller:
php artisan make:controller PostController --resource
Controller ini akan memiliki metode untuk operasi CRUD. Buka file PostController.php
yang ada di app/Http/Controllers
dan tambahkan kode berikut:
use App\Models\Post;
use Illuminate\Http\Request;
class PostController extends Controller
{
public function index()
{
$posts = Post::all();
return view('posts.index', compact('posts'));
}
public function create()
{
return view('posts.create');
}
public function store(Request $request)
{
$request->validate([
'title' => 'required',
'content' => 'required',
]);
Post::create($request->all());
return redirect()->route('posts.index')->with('success', 'Post created successfully.');
}
public function show(Post $post)
{
return view('posts.show', compact('post'));
}
public function edit(Post $post)
{
return view('posts.edit', compact('post'));
}
public function update(Request $request, Post $post)
{
$request->validate([
'title' => 'required',
'content' => 'required',
]);
$post->update($request->all());
return redirect()->route('posts.index')->with('success', 'Post updated successfully.');
}
public function destroy(Post $post)
{
$post->delete();
return redirect()->route('posts.index')->with('success', 'Post deleted successfully.');
}
}
Langkah 5: Menentukan Rute
Tambahkan rute untuk controller yang baru kita buat. Buka file routes/web.php
, dan tambahkan kode berikut:
use App\Http\Controllers\PostController;
Route::resource('posts', PostController::class);
Langkah 6: Membuat Views
Kita perlu membuat beberapa view untuk mengelola tampilan. Di dalam folder resources/views
, buat folder baru bernama posts
, kemudian buat file berikut:
1. index.blade.php
@extends('layouts.app')
@section('content')
<h1>Posts</h1>
<a href="{{ route('posts.create') }}">Create Post</a>
@if(session('success'))
<div>{{ session('success') }}</div>
@endif
<ul>
@foreach($posts as $post)
<li>
<a href="{{ route('posts.show', $post) }}">{{ $post->title }}</a>
<a href="{{ route('posts.edit', $post) }}">Edit</a>
<form action="{{ route('posts.destroy', $post) }}" method="POST" style="display:inline;">
@csrf
@method('DELETE')
<button type="submit">Delete</button>
</form>
</li>
@endforeach
</ul>
@endsection
2. create.blade.php
@extends('layouts.app')
@section('content')
<h1>Create Post</h1>
<form action="{{ route('posts.store') }}" method="POST">
@csrf
<input type="text" name="title" placeholder="Title" required>
<textarea name="content" placeholder="Content" required></textarea>
<button type="submit">Submit</button>
</form>
@endsection
3. edit.blade.php
@extends('layouts.app')
@section('content')
<h1>Edit Post</h1>
<form action="{{ route('posts.update', $post) }}" method="POST">
@csrf
@method('PUT')
<input type="text" name="title" value="{{ $post->title }}" required>
<textarea name="content" required>{{ $post->content }}</textarea>
<button type="submit">Update</button>
</form>
@endsection
4. show.blade.php
@extends('layouts.app')
@section('content')
<h1>{{ $post->title }}</h1>
<p>{{ $post->content }}</p>
<a href="{{ route('posts.index') }}">Back</a>
@endsection
Langkah 7: Menjalankan Aplikasi
Sekarang, Anda dapat menjalankan aplikasi dengan perintah:
php artisan serve
Buka browser dan kunjungi http://localhost:8000/posts
untuk melihat aplikasi CRUD yang telah Anda buat.
Anda sekarang telah berhasil membangun aplikasi CRUD sederhana menggunakan Laravel. Anda dapat mengembangkan lebih lanjut dengan menambahkan fitur lain seperti autentikasi, validasi yang lebih kompleks, dan tampilan yang lebih menarik.
Selamat mencoba!