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!