Blog Content

Home – Blog Content

Tutorial CRUD Laravel 11: Membuat Modul Create, Read, Update, dan Delete

Laravel adalah salah satu framework PHP yang paling populer dan banyak digunakan oleh pengembang web karena kemudahan dan kelengkapan fitur-fiturnya. Salah satu fitur yang paling sering digunakan adalah CRUD (Create, Read, Update, Delete). Dalam artikel ini, kita akan membahas bagaimana cara membuat modul CRUD Laravel 11 dengan penjelasan langkah demi langkah. Artikel ini dirancang untuk membantu Anda memahami dan menerapkan CRUD Laravel dalam aplikasi Anda.

Apa itu CRUD Laravel?

CRUD adalah akronim untuk Create, Read, Update, dan Delete. Operasi CRUD adalah inti dari hampir setiap aplikasi web, digunakan untuk mengelola data dalam basis data.

  • Create: Menambahkan data baru ke dalam basis data.
  • Read: Mengambil data dari basis data untuk ditampilkan.
  • Update: Mengedit data yang sudah ada dalam basis data.
  • Delete: Menghapus data dari basis data.

Di Laravel, operasi CRUD dapat dengan mudah dibuat menggunakan fitur seperti Eloquent ORM, routing, dan Blade template.

Sebelum mempelajari materi CRUD laravel 11 ada baiknya anda membaca artikel artikel pengenalan terlebih dahulu agar menambah pengetahuan anda mengenai laravel

  1. Belajar Larave; Memahami Struktur Folder Laravel 11
  2. Belajar Laravel – Cara Install Laravel 11 di Windows, macOS, dan Linux
  3. Memahami Konfigurasi Laravel dan Cara Mengamankan File .env Laravel 11
  4. Belajar Laravel; Memahami Route Laravel 11
  5. Membuat Controller di Laravel 11
  6. Belajar Eloquent Laravel: Panduan Lengkap ORM Laravel

Langkah-langkah Membuat CRUD Laravel 11

1. Persiapan Proyek Laravel

  • Buat proyek Laravel baru jika Anda belum memilikinya
composer create-project laravel/laravel crud-example cd crud-example php artisan serve
  • Pastikan proyek berjalan di http://localhost:8000.

2. Buat Database dan Konfigurasi

  1. Buat database baru, misalnya crud_example.
  2. Konfigurasikan file .env
DB_CONNECTION=mysql
DB_HOST=127.0.0.1
DB_PORT=3306
DB_DATABASE=crud_example
DB_USERNAME=root
DB_PASSWORD=

3. Buat Migration untuk Tabel

Jalankan perintah berikut untuk membuat migration:

php artisan make:migration create_posts_table
 

Edit file migration di database/migrations:

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

Jalankan migration:

php artisan migrate

4. Buat Model dan Seeder

Buat model Post:

php artisan make:model Post
 

Tambahkan seeder untuk mengisi data dummy:

php artisan make:seeder PostSeeder

Edit PostSeeder:

use App\Models\Post;
use Illuminate\Database\Seeder;

class PostSeeder extends Seeder
{
    public function run()
    {
        Post::factory()->count(10)->create();
    }
}

Jalankan seeder:

php artisan db:seed --class=PostSeeder
 

5. Buat Controller CRUD

Buat controller untuk menangani operasi CRUD:

php artisan make:controller PostController --resource

Isi PostController:

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)
    {
        $validated = $request->validate([
            'title' => 'required|string|max:255',
            'content' => 'required',
        ]);

        Post::create($validated);
        return redirect()->route('posts.index')->with('success', 'Post created successfully.');
    }

    public function edit(Post $post)
    {
        return view('posts.edit', compact('post'));
    }

    public function update(Request $request, Post $post)
    {
        $validated = $request->validate([
            'title' => 'required|string|max:255',
            'content' => 'required',
        ]);

        $post->update($validated);
        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.');
    }
}

Penjelasan Fungsi dalam PostController

1. index()

Fungsi ini digunakan untuk menampilkan semua data dalam tabel posts.

public function index()
{
    $posts = Post::all(); // Mengambil semua data dari tabel 'posts'
    return view('posts.index', compact('posts')); // Mengirim data ke view 'posts.index'
}
 
  • Post::all(): Mengambil semua record dari model Post (tabel posts).
  • compact('posts'): Membuat array dengan kunci 'posts' dan nilai data $posts.
  • view('posts.index', ...): Mengembalikan view bernama index dalam folder posts dengan data yang dikirim.

Tujuan: Untuk menampilkan daftar semua postingan.


2. create()

Fungsi ini digunakan untuk menampilkan halaman form pembuatan data baru.

public function create()
{
    return view('posts.create'); // Mengembalikan view form untuk membuat data baru
}
 
  • view('posts.create'): Mengembalikan view create.blade.php di folder posts.

Tujuan: Menampilkan form kosong untuk memasukkan data baru.


3. store()

Fungsi ini digunakan untuk menyimpan data baru ke dalam database.

public function store(Request $request)
{
    $validated = $request->validate([
        'title' => 'required|string|max:255',
        'content' => 'required',
    ]);

    Post::create($validated); // Menyimpan data ke database

    return redirect()->route('posts.index')->with('success', 'Post created successfully.');
} 
  • $request->validate([...]): Memvalidasi input dari form:
    • required: Field wajib diisi.
    • string: Field harus berupa teks.
    • max:255: Batas maksimal karakter untuk field title.
  • Post::create($validated): Menyimpan data yang sudah divalidasi ke tabel posts.
  • redirect()->route('posts.index'): Mengarahkan kembali ke halaman daftar postingan (index).
  • with('success', ...): Menambahkan pesan sukses ke session flash.

Tujuan: Menyimpan data baru ke database.


4. edit()

Fungsi ini digunakan untuk menampilkan form pengeditan data yang sudah ada.

public function edit(Post $post)
{
    return view('posts.edit', compact('post')); // Mengirim data spesifik ke view
}
  • Post $post: Laravel secara otomatis mencari data berdasarkan parameter ID yang diterima di URL.
  • compact('post'): Mengirim data postingan spesifik ke view.
  • view('posts.edit', ...): Mengembalikan view edit.blade.php dengan data postingan.

Tujuan: Menampilkan form dengan data yang sudah ada untuk diedit.


5. update()

Fungsi ini digunakan untuk memperbarui data yang sudah ada di database.

public function update(Request $request, Post $post)
{
    $validated = $request->validate([
        'title' => 'required|string|max:255',
        'content' => 'required',
    ]);

    $post->update($validated); // Memperbarui data di database

    return redirect()->route('posts.index')->with('success', 'Post updated successfully.');
} 
  • $request->validate([...]): Memvalidasi input dari form.
  • $post->update($validated): Memperbarui data pada instance model Post berdasarkan input yang sudah divalidasi.
  • redirect()->route('posts.index'): Mengarahkan kembali ke halaman daftar postingan.
  • with('success', ...): Menambahkan pesan sukses ke session flash.

Tujuan: Memperbarui data pada database dengan nilai baru.


6. destroy()

Fungsi ini digunakan untuk menghapus data dari database.

public function destroy(Post $post)
{
    $post->delete(); // Menghapus data dari database

    return redirect()->route('posts.index')->with('success', 'Post deleted successfully.');
}
  • $post->delete(): Menghapus data dari database berdasarkan ID yang diterima.
  • redirect()->route('posts.index'): Mengarahkan kembali ke halaman daftar postingan.
  • with('success', ...): Menambahkan pesan sukses ke session flash.

Tujuan: Menghapus data dari database.


Setiap fungsi di PostController memiliki tugas spesifik:

  • index(): Menampilkan semua data.
  • create(): Menampilkan form untuk data baru.
  • store(): Menyimpan data baru ke database.
  • edit(): Menampilkan form pengeditan data.
  • update(): Memperbarui data yang sudah ada.
  • destroy(): Menghapus data dari database.

Dengan memahami setiap fungsi ini, Anda dapat mengimplementasikan CRUD di Laravel dengan efisien. Jangan lupa untuk memanfaatkan fitur bawaan Laravel seperti Eloquent ORM untuk menyederhanakan pengelolaan database.

6. Buat Routing

Edit file routes/web.php:

use App\Http\Controllers\PostController;

Route::resource('posts', PostController::class);
 

7. Buat Blade Template

Buat folder resources/views/posts/ dan file berikut:

  • index (index.blade.php)
@extends('layouts.app')

@section('content')
<div class="container">
    <h1>All Posts</h1>
    <a href="{{ route('posts.create') }}" class="btn btn-primary">Create Post</a>
    <table class="table">
        <thead>
            <tr>
                <th>ID</th>
                <th>Title</th>
                <th>Actions</th>
            </tr>
        </thead>
        <tbody>
            @foreach($posts as $post)
            <tr>
                <td>{{ $post->id }}</td>
                <td>{{ $post->title }}</td>
                <td>
                    <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 class="btn btn-danger">Delete</button>
                    </form>
                </td>
            </tr>
            @endforeach
        </tbody>
    </table>
</div>
@endsection
  • Create (create.blade.php)
@extends('layouts.app')

@section('content')
<div class="container">
    <h1>Create Post</h1>
    <form action="{{ route('posts.store') }}" method="POST">
        @csrf
        <div class="form-group">
            <label for="title">Title</label>
            <input type="text" name="title" id="title" class="form-control">
        </div>
        <div class="form-group">
            <label for="content">Content</label>
            <textarea name="content" id="content" class="form-control"></textarea>
        </div>
        <button class="btn btn-success">Create</button>
    </form>
</div>
@endsection
  • Edit (edit.blade.php)
@extends('layouts.app')

@section('content')
<div class="container">
    <h1>Edit Post</h1>
    <form action="{{ route('posts.update', $post->id) }}" method="POST">
        @csrf
        @method('PUT')
        <div class="form-group">
            <label for="title">Title</label>
            <input type="text" name="title" id="title" class="form-control" value="{{ $post->title }}">
        </div>
        <div class="form-group">
            <label for="content">Content</label>
            <textarea name="content" id="content" class="form-control">{{ $post->content }}</textarea>
        </div>
        <button class="btn btn-success">Update</button>
    </form>
</div>
@endsection

Kesimpulan

Membuat CRUD Laravel sangat mudah dengan bantuan Eloquent ORM, Blade Template, dan fitur routing. Dengan memahami dan mempraktikkan langkah-langkah di atas, Anda dapat mengelola data dalam aplikasi dengan efisien.
Jika Anda membutuhkan bantuan dalam membangun aplikasi berbasis Laravel, Arrazy Inovasi siap membantu Anda dengan layanan pengembangan aplikasi yang profesional dan berkualitas. Hubungi kami sekarang untuk solusi terbaik bagi bisnis Anda!

vandyahmad24

Writer & Blogger

Leave a Reply

Your email address will not be published. Required fields are marked *

Most Recent Posts

  • All Post
  • Belajar
  • Bisnis
  • Jasa Pembuatan Sistem Aplikasi
  • Jasa Pembuatan Website
  • Laravel
  • Pemprograman
  • React Native

IT Konsultan Profesional yang siap membantu bisnis Anda. Dari pembuatan website yang menarik, optimasi SEO, hingga pengembangan aplikasi mobile

Layanan

Web Development

Optimasi SEO

Mobile Development

System Development

Menu

© 2024 Created With Arrazy Inovasi