Apps Artificial Intelligence CSS DevOps Go JavaScript Laravel Linux MongoDB MySQL PHP Python Rust Vue

Membangun CRUD Sederhana di Laravel: Panduan Praktis

2 min read .
Membangun CRUD Sederhana di Laravel: Panduan Praktis

Bikin aplikasi CRUD itu salah satu skill paling dasar tapi juga paling sering dibutuhin buat developer web. Gini deh, kalau kamu lagi belajar Laravel 11, bikin aplikasi sederhana untuk mengelola postingan itu langkah yang pas buat mulai. Di akhir panduan ini, kamu bakal punya aplikasi yang bisa Create, Read, Update, Delete postingan dengan mudah.

1. Instal Laravel dan Jalankan Server

Pastikan Composer sudah terpasang, terus jalankan:

composer create-project --prefer-dist laravel/laravel laravel-crud
cd laravel-crud
php artisan serve

Akses aplikasi di http://localhost:8000. Simple kan?

2. Konfigurasi Basis Data

Buka .env dan sesuaikan kredensial database:

DB_CONNECTION=mysql
DB_HOST=127.0.0.1
DB_PORT=3306
DB_DATABASE=nama_database
DB_USERNAME=user_database
DB_PASSWORD=password_database

3. Buat Model & Migrasi

Generate model Post dengan migrasi:

php artisan make:model Post -m

Edit migrasi di database/migrations:

public function up()
{
    Schema::create('posts', function (Blueprint $table) {
        $table->id();
        $table->string('title');
        $table->text('content');
        $table->timestamps();
    });
}

Migrasikan database:

php artisan migrate

4. Buat Controller CRUD

Generate PostController:

php artisan make:controller PostController

Tambahkan metode CRUD di app/Http/Controllers/PostController.php:

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|max:255','content'=>'required']);
        Post::create($request->all());
        return redirect()->route('posts.index');
    }
    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|max:255','content'=>'required']);
        $post->update($request->all());
        return redirect()->route('posts.index');
    }
    public function destroy(Post $post) { $post->delete(); return redirect()->route('posts.index'); }
}

5. Siapkan Model Post

Biar mass assignment bisa jalan, edit app/Models/Post.php:

class Post extends Model
{
    use HasFactory;
    protected $fillable = ['title', 'content'];
}

6. Buat View Blade

Laravel pakai Blade. kita buat layout dasar di resources/views/layouts/app.blade.php:

<html>
<head><title>CRUD App - @yield('title')</title></head>
<body>
    <div class="container">@yield('content')</div>
</body>
</html>

Contoh index.blade.php:

@extends('layouts.app')
@section('content')
<h1>Posts</h1>
<a href="{{ route('posts.create') }}">Create New Post</a>
<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

View lainnya (create, edit, show) mirip, tinggal sesuaikan form dan tombol.

7. Definisikan Rute

Tambahkan di routes/web.php:

use App\Http\Controllers\PostController;
Route::resource('posts', PostController::class);

8. Uji Aplikasi

Akses http://localhost:8000/posts. Coba bikin, edit, lihat, dan hapus postingan. Gini deh, kalau pas lagi uji coba, saya pernah laptop mati tiba-tiba pas lagi ngetes form panjang—jadi inget, backup sebelum nge-test itu penting 😅.

Kesimpulan

Pada akhirnya, bikin CRUD di Laravel itu straightforward tapi ngasih dasar kuat buat belajar fitur Laravel lebih dalam. Sekarang kamu bisa lanjut ke validasi lebih kompleks, relasi antar tabel, atau bahkan integrasi dengan Vue/Livewire. Dengan fondasi ini, eksperimen itu jadi lebih mudah dan menyenangkan.

Lihat Juga

chevron-up