tutwuri
  • Error generating categories
  • Hosting
  • Indonesia
  • Website
  • Laravel
  • Bisnis
No Result
View All Result
tutwuri
  • Error generating categories
  • Hosting
  • Indonesia
  • Website
  • Laravel
  • Bisnis
No Result
View All Result
tutwuri
No Result
View All Result
Home Aplikasi

Cara Membuat CRUD dengan Laravel 9: Panduan Praktis dan Mudah Dipahami

Jasper Nightshade by Jasper Nightshade
May 30, 2025
in Aplikasi, Developer, Laravel, Tutorial, Web
0
Share on FacebookShare on Twitter

Laravel 9 adalah framework PHP yang populer di kalangan developer web karena kemudahan dan fleksibilitasnya. Salah satu tugas paling mendasar dalam pengembangan web adalah membuat CRUD (Create, Read, Update, Delete). Dalam artikel ini, kita akan membahas cara membuat CRUD dengan Laravel 9 secara praktis dan mudah dipahami, langkah demi langkah. Jadi, siap untuk memulai? Ayo kita mulai!

1. Persiapan Awal: Instalasi Laravel 9 dan Konfigurasi Database

Sebelum kita masuk ke pembuatan CRUD, pastikan kamu sudah memiliki lingkungan pengembangan yang siap. Ini termasuk PHP (minimal versi 8.0), Composer, dan database (misalnya MySQL, PostgreSQL, atau SQLite).

Instalasi Laravel 9:

Buka terminal atau command prompt kamu dan jalankan perintah berikut:

Related Post

Cara Membuat Model AI dengan Tensorflow: Panduan Lengkap untuk Pemula

December 2, 2025

Tutorial AI untuk Pemula Bahasa Indonesia: Memulai Petualangan Kecerdasan Buatan

December 1, 2025

Contoh Project Laravel Open Source: Inspirasi & Referensi Kode

November 30, 2025

Komunitas Laravel Developer Indonesia: Bergabung & Belajar Bersama!

November 30, 2025
composer create-project laravel/laravel:^9.0 nama_proyek
cd nama_proyek

Ganti nama_proyek dengan nama proyek yang kamu inginkan. Perintah ini akan membuat proyek Laravel 9 baru di direktori tersebut.

Konfigurasi Database:

Setelah instalasi selesai, buka file .env di root proyek kamu. Cari bagian yang berkaitan dengan konfigurasi database dan sesuaikan dengan detail database kamu. Contoh konfigurasi untuk MySQL:

DB_CONNECTION=mysql
DB_HOST=127.0.0.1
DB_PORT=3306
DB_DATABASE=nama_database
DB_USERNAME=nama_pengguna
DB_PASSWORD=kata_sandi

Pastikan untuk mengganti nama_database, nama_pengguna, dan kata_sandi dengan kredensial yang benar.

Memastikan Aplikasi Berjalan:

Untuk memastikan aplikasi Laravel kamu berjalan dengan baik, jalankan perintah berikut di terminal:

php artisan serve

Buka browser kamu dan kunjungi http://127.0.0.1:8000. Jika kamu melihat halaman selamat datang Laravel, berarti instalasi dan konfigurasi berhasil!

2. Membuat Model dan Migrasi Database: Mendesain Struktur Data

Langkah selanjutnya dalam cara membuat CRUD dengan Laravel 9 adalah mendefinisikan struktur data yang akan kita kelola. Kita akan membuat model dan migrasi database untuk ini. Anggap saja kita ingin membuat CRUD untuk mengelola data “Produk”.

Membuat Model dan Migrasi:

Gunakan Artisan CLI untuk membuat model dan migrasi secara bersamaan:

php artisan make:model Product -m

Perintah ini akan membuat dua file: app/Models/Product.php (model Product) dan database/migrations/xxxx_xx_xx_xxxxxx_create_products_table.php (migrasi untuk tabel products).

Mendefinisikan Struktur Tabel:

Buka file migrasi yang baru dibuat dan tambahkan kolom-kolom yang dibutuhkan untuk tabel products. Contohnya:

<?php

use IlluminateDatabaseMigrationsMigration;
use IlluminateDatabaseSchemaBlueprint;
use IlluminateSupportFacadesSchema;

return new class extends Migration
{
    /**
     * Run the migrations.
     *
     * @return void
     */
    public function up()
    {
        Schema::create('products', function (Blueprint $table) {
            $table->id();
            $table->string('name');
            $table->text('description')->nullable();
            $table->decimal('price', 10, 2);
            $table->integer('stock');
            $table->timestamps();
        });
    }

    /**
     * Reverse the migrations.
     *
     * @return void
     */
    public function down()
    {
        Schema::dropIfExists('products');
    }
};

Pada kode di atas, kita mendefinisikan kolom name (nama produk), description (deskripsi produk), price (harga produk), dan stock (stok produk). timestamps() akan secara otomatis menambahkan kolom created_at dan updated_at.

Menjalankan Migrasi:

Setelah mendefinisikan struktur tabel, jalankan migrasi untuk membuat tabel di database kamu:

php artisan migrate

Jika tidak ada error, tabel products akan berhasil dibuat di database kamu.

3. Membuat Controller: Mengatur Logika Aplikasi CRUD

Controller berfungsi sebagai jembatan antara model dan view. Di sinilah logika aplikasi CRUD akan diimplementasikan.

Membuat Controller:

Gunakan Artisan CLI untuk membuat controller:

php artisan make:controller ProductController

Perintah ini akan membuat file app/Http/Controllers/ProductController.php.

Implementasi Metode CRUD dalam Controller:

Buka file ProductController.php dan tambahkan metode-metode CRUD: index, create, store, show, edit, update, dan destroy.

<?php

namespace AppHttpControllers;

use AppModelsProduct;
use IlluminateHttpRequest;

class ProductController extends Controller
{
    /**
     * Display a listing of the resource.
     *
     * @return IlluminateHttpResponse
     */
    public function index()
    {
        $products = Product::all();
        return view('products.index', compact('products'));
    }

    /**
     * Show the form for creating a new resource.
     *
     * @return IlluminateHttpResponse
     */
    public function create()
    {
        return view('products.create');
    }

    /**
     * Store a newly created resource in storage.
     *
     * @param  IlluminateHttpRequest  $request
     * @return IlluminateHttpResponse
     */
    public function store(Request $request)
    {
        $request->validate([
            'name' => 'required',
            'description' => 'nullable',
            'price' => 'required|numeric|min:0',
            'stock' => 'required|integer|min:0',
        ]);

        Product::create($request->all());

        return redirect()->route('products.index')
                         ->with('success','Product created successfully.');
    }

    /**
     * Display the specified resource.
     *
     * @param  AppModelsProduct  $product
     * @return IlluminateHttpResponse
     */
    public function show(Product $product)
    {
        return view('products.show',compact('product'));
    }

    /**
     * Show the form for editing the specified resource.
     *
     * @param  AppModelsProduct  $product
     * @return IlluminateHttpResponse
     */
    public function edit(Product $product)
    {
        return view('products.edit',compact('product'));
    }

    /**
     * Update the specified resource in storage.
     *
     * @param  IlluminateHttpRequest  $request
     * @param  AppModelsProduct  $product
     * @return IlluminateHttpResponse
     */
    public function update(Request $request, Product $product)
    {
        $request->validate([
            'name' => 'required',
            'description' => 'nullable',
            'price' => 'required|numeric|min:0',
            'stock' => 'required|integer|min:0',
        ]);

        $product->update($request->all());

        return redirect()->route('products.index')
                         ->with('success','Product updated successfully');
    }

    /**
     * Remove the specified resource from storage.
     *
     * @param  AppModelsProduct  $product
     * @return IlluminateHttpResponse
     */
    public function destroy(Product $product)
    {
        $product->delete();

        return redirect()->route('products.index')
                         ->with('success','Product deleted successfully');
    }
}

Kode di atas menunjukkan implementasi dasar dari metode CRUD. Perhatikan bahwa kita menggunakan validasi untuk memastikan data yang disimpan valid. Kita juga menggunakan redirect() untuk mengarahkan pengguna kembali ke halaman index setelah operasi selesai.

4. Membuat View: Menampilkan Data ke Pengguna

View adalah tampilan yang dilihat pengguna. Kita akan membuat view untuk menampilkan daftar produk, form untuk menambah produk baru, form untuk mengedit produk, dan halaman detail produk.

Membuat Direktori View:

Buat direktori resources/views/products untuk menyimpan file-file view.

Membuat File View:

Buat file-file view berikut di dalam direktori resources/views/products:

  • index.blade.php: Menampilkan daftar produk.
  • create.blade.php: Form untuk menambah produk baru.
  • edit.blade.php: Form untuk mengedit produk.
  • show.blade.php: Menampilkan detail produk.

Contoh index.blade.php:

<!DOCTYPE html>
<html>
<head>
    <title>Products</title>
    <link href="https://cdn.jsdelivr.net/npm/[email protected]/dist/css/bootstrap.min.css" rel="stylesheet">
</head>
<body>

<div class="container">
    @if ($message = Session::get('success'))
        <div class="alert alert-success">
            <p>{{ $message }}</p>
        </div>
    @endif
    <h1>Daftar Produk</h1>
    <a href="{{ route('products.create') }}" class="btn btn-success mb-3">Tambah Produk Baru</a>
    <table class="table table-bordered">
        <thead>
            <tr>
                <th>No</th>
                <th>Nama</th>
                <th>Deskripsi</th>
                <th>Harga</th>
                <th>Stok</th>
                <th width="280px">Aksi</th>
            </tr>
        </thead>
        <tbody>
            @foreach ($products as $product)
            <tr>
                <td>{{ ++$i }}</td>
                <td>{{ $product->name }}</td>
                <td>{{ $product->description }}</td>
                <td>{{ $product->price }}</td>
                <td>{{ $product->stock }}</td>
                <td>
                    <form action="{{ route('products.destroy',$product->id) }}" method="POST">
                        <a class="btn btn-info" href="{{ route('products.show',$product->id) }}">Show</a>
                        <a class="btn btn-primary" href="{{ route('products.edit',$product->id) }}">Edit</a>
                        @csrf
                        @method('DELETE')
                        <button type="submit" class="btn btn-danger">Delete</button>
                    </form>
                </td>
            </tr>
            @endforeach
        </tbody>
    </table>
</div>

</body>
</html>

Kode di atas adalah contoh sederhana dari index.blade.php. Kode ini menampilkan daftar produk dalam bentuk tabel. Kode ini juga menyertakan link untuk melihat detail produk, mengedit produk, dan menghapus produk.

Membuat File View Lainnya:

Buat file create.blade.php, edit.blade.php, dan show.blade.php dengan struktur yang sesuai. Pastikan untuk menggunakan form HTML untuk memasukkan data produk pada create.blade.php dan edit.blade.php.

5. Mendefinisikan Route: Menghubungkan URL dengan Controller

Route adalah pemetaan antara URL dan controller. Kita perlu mendefinisikan route untuk setiap metode CRUD yang telah kita buat di controller.

Mendefinisikan Route:

Buka file routes/web.php dan tambahkan route berikut:

<?php

use IlluminateSupportFacadesRoute;
use AppHttpControllersProductController;

/*
|--------------------------------------------------------------------------
| Web Routes
|--------------------------------------------------------------------------
|
| Here is where you can register web routes for your application. These
| routes are loaded by the RouteServiceProvider within a group which
| contains the "web" middleware group. Now create something great!
|
*/

Route::resource('products', ProductController::class);

Baris Route::resource('products', ProductController::class); secara otomatis membuat route untuk semua metode CRUD di ProductController. Ini adalah cara yang paling efisien untuk mendefinisikan route CRUD.

6. Menguji Aplikasi CRUD: Verifikasi Fungsionalitas

Setelah semua langkah di atas selesai, saatnya untuk menguji aplikasi CRUD kamu. Buka browser kamu dan kunjungi URL berikut:

  • http://127.0.0.1:8000/products: Menampilkan daftar produk.
  • http://127.0.0.1:8000/products/create: Menampilkan form untuk menambah produk baru.
  • http://127.0.0.1:8000/products/{id}: Menampilkan detail produk (ganti {id} dengan ID produk).
  • http://127.0.0.1:8000/products/{id}/edit: Menampilkan form untuk mengedit produk (ganti {id} dengan ID produk).

Pastikan semua fungsi CRUD (Create, Read, Update, Delete) berjalan dengan baik. Periksa apakah data berhasil disimpan, ditampilkan, diubah, dan dihapus dari database.

7. Validasi Data: Meningkatkan Keamanan dan Integritas

Validasi data sangat penting untuk memastikan data yang disimpan ke database valid dan konsisten. Laravel menyediakan fitur validasi yang mudah digunakan.

Implementasi Validasi:

Kita sudah mengimplementasikan validasi pada metode store dan update di ProductController.php di atas. Perhatikan kode berikut:

$request->validate([
    'name' => 'required',
    'description' => 'nullable',
    'price' => 'required|numeric|min:0',
    'stock' => 'required|integer|min:0',
]);

Kode ini menentukan aturan validasi untuk setiap field. Misalnya, name harus diisi (required), price harus berupa angka (numeric) dan minimal 0, dan stock harus berupa integer dan minimal 0. Jika validasi gagal, Laravel akan secara otomatis mengarahkan pengguna kembali ke halaman sebelumnya dan menampilkan pesan error.

Menampilkan Pesan Error Validasi:

Untuk menampilkan pesan error validasi di view, kamu bisa menggunakan kode berikut:

@if ($errors->any())
    <div class="alert alert-danger">
        <ul>
            @foreach ($errors->all() as $error)
                <li>{{ $error }}</li>
            @endforeach
        </ul>
    </div>
@endif

Kode ini akan menampilkan pesan error jika ada error validasi.

8. Implementasi Pagination: Menangani Data dalam Jumlah Besar

Ketika data yang dikelola semakin banyak, menampilkan semua data sekaligus akan membuat halaman menjadi lambat dan sulit dinavigasi. Implementasi pagination (penomoran halaman) adalah solusi yang tepat.

Implementasi Pagination:

Ubah metode index di ProductController.php menjadi berikut:

public function index()
{
    $products = Product::paginate(10); // Menampilkan 10 produk per halaman
    return view('products.index', compact('products'))
        ->with('i', (request()->input('page', 1) - 1) * 10); //Untuk menampilkan nomor urut yang benar di pagination
}

Pada kode di atas, kita menggunakan metode paginate(10) untuk membagi data menjadi halaman-halaman dengan 10 produk per halaman.

Menampilkan Link Pagination di View:

Tambahkan kode berikut di index.blade.php untuk menampilkan link pagination:

{!! $products->links() !!}

Kode ini akan menampilkan link untuk berpindah antar halaman.

9. Fitur Pencarian: Mempermudah Pencarian Data

Fitur pencarian akan sangat membantu pengguna dalam menemukan data yang mereka cari dengan cepat.

Implementasi Fitur Pencarian:

Tambahkan form pencarian di index.blade.php:

<form action="{{ route('products.index') }}" method="GET">
    <div class="input-group mb-3">
      <input type="text" class="form-control" placeholder="Cari produk..." name="search">
      <button class="btn btn-outline-secondary" type="submit">Cari</button>
    </div>
</form>

Ubah metode index di ProductController.php menjadi berikut:

public function index(Request $request)
{
    $search = $request->get('search');
    $products = Product::when($search, function ($query, $search) {
        return $query->where('name', 'like', "%{$search}%")
                     ->orWhere('description', 'like', "%{$search}%");
    })->paginate(10);

    return view('products.index', compact('products'))
        ->with('i', (request()->input('page', 1) - 1) * 10);
}

Kode di atas akan mencari produk berdasarkan nama atau deskripsi.

10. Keamanan Aplikasi CRUD: Melindungi Data dari Ancaman

Keamanan adalah aspek penting dalam pengembangan aplikasi web. Pastikan aplikasi CRUD kamu aman dari ancaman seperti SQL injection, cross-site scripting (XSS), dan cross-site request forgery (CSRF).

Mencegah SQL Injection:

Laravel secara otomatis melindungi aplikasi kamu dari SQL injection dengan menggunakan Eloquent ORM. Hindari menggunakan raw queries jika memungkinkan.

Mencegah XSS:

Gunakan Blade templating engine Laravel yang secara otomatis melakukan escaping pada data yang ditampilkan di view. Ini akan mencegah XSS.

Mencegah CSRF:

Laravel menyediakan middleware CSRF yang melindungi aplikasi kamu dari serangan CSRF. Pastikan untuk menyertakan token CSRF pada setiap form yang mengirimkan data ke server.

@csrf

11. Penerapan Resource Controller: Cara Lebih Ringkas

Laravel menyediakan fitur Resource Controller yang memudahkan pembuatan CRUD dengan struktur kode yang lebih ringkas. Kita sudah menggunakan ini di awal. Resource Controller secara otomatis menyediakan route dan controller method yang dibutuhkan untuk operasi CRUD.

Keuntungan Resource Controller:

  • Kode lebih terstruktur dan mudah dibaca.
  • Mengurangi boilerplate code.
  • Mempercepat proses development.

12. Debugging dan Troubleshooting: Mengatasi Masalah dalam Pembuatan CRUD

Meskipun mengikuti panduan ini dengan seksama, mungkin saja kamu akan menemui masalah. Berikut beberapa tips untuk debugging dan troubleshooting:

  • Periksa Log File: Laravel mencatat error ke dalam log file yang terletak di storage/logs/laravel.log. Periksa file ini untuk melihat pesan error yang lebih detail.
  • Gunakan Debugging Tools: Gunakan tools seperti Xdebug untuk melakukan debugging step-by-step.
  • Manfaatkan Laravel Debugbar: Install package barryvdh/laravel-debugbar untuk menampilkan informasi debugging di browser.
  • Periksa Konfigurasi: Pastikan konfigurasi database dan file .env sudah benar.
  • Cari Solusi Online: Google dan Stack Overflow adalah sumber daya yang sangat baik untuk mencari solusi atas masalah yang kamu hadapi.

Dengan panduan lengkap ini, kamu sekarang memiliki pemahaman yang kuat tentang cara membuat CRUD dengan Laravel 9. Ingatlah untuk selalu memprioritaskan keamanan dan validasi data. Selamat mencoba dan semoga sukses!

Tags: Bahasa IndonesiaCRUDDatabaseEloquentLaravel 9Panduan LaravelPemrograman Webpengembangan webPHPtutorial
Jasper Nightshade

Jasper Nightshade

Related Posts

AI

Cara Membuat Model AI dengan Tensorflow: Panduan Lengkap untuk Pemula

by Finnian Quickthorn
December 2, 2025
AI

Tutorial AI untuk Pemula Bahasa Indonesia: Memulai Petualangan Kecerdasan Buatan

by Lyra Silverbrook
December 1, 2025
Contoh

Contoh Project Laravel Open Source: Inspirasi & Referensi Kode

by Elara Meadowlight
November 30, 2025
Next Post

Package Laravel Terbaik untuk Pengembangan Web: Rekomendasi dan Penggunaan

Leave a Reply Cancel reply

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

Recommended

Contoh Implementasi AI dalam Bisnis UKM: Studi Kasus dan Peluang Bisnis

June 20, 2025

Contoh Project Web Development Sederhana: Inspirasi dan Tutorial Lengkap

June 12, 2025

Cara Implementasi Authentication di Laravel: Keamanan Website Terjamin

August 1, 2025

Contoh Website Company Profile Sederhana dengan HTML CSS: Inspirasi Desain Modern

July 30, 2025

Cara Meningkatkan Penjualan dengan CRM: Strategi Efektif untuk Pertumbuhan Bisnis

June 5, 2026

Perbandingan CRM Open Source dan Berbayar: Pilih Sesuai Anggaran dan Kebutuhan

June 5, 2026

Contoh Implementasi CRM yang Sukses di Indonesia: Inspirasi untuk Bisnis Anda

June 5, 2026

Training CRM untuk Tim Sales dan Marketing: Tingkatkan Kompetensi dan Produktivitas

June 5, 2026

tutwuri

Our media platform offers reliable news and insightful articles. Stay informed with our comprehensive coverage and in-depth analysis on various topics.
Read more »

Recent Posts

  • Cara Meningkatkan Penjualan dengan CRM: Strategi Efektif untuk Pertumbuhan Bisnis
  • Perbandingan CRM Open Source dan Berbayar: Pilih Sesuai Anggaran dan Kebutuhan
  • Contoh Implementasi CRM yang Sukses di Indonesia: Inspirasi untuk Bisnis Anda

Categories

  • AI
  • Akuntansi
  • Algoritma
  • Alternatif
  • Analisis
  • and separated by commas: Hosting
  • API
  • Aplikasi
  • Asuransi
  • Authentication
  • Backend
  • Bahasa Indonesia
  • Belajar
  • Berita
  • Biaya
  • Bisnis
  • Blog
  • Bootstrap
  • Branding
  • Bulanan
  • Business
  • Cepat
  • Chatbot
  • ChatGPT
  • Cloud
  • CMS
  • Command
  • Contoh
  • CPanel
  • CRM
  • CRUD
  • CSS
  • Data
  • Database
  • Debugging
  • Deployment
  • Desain
  • Design
  • Developer
  • Development
  • Digital
  • Dokumentasi
  • Domain
  • Download
  • Dukungan
  • E-commerce
  • Efektif
  • Efektivitas
  • Efisiensi
  • Email
  • Error
  • Error generating categories
  • Etika
  • Event
  • Excel
  • Fashion
  • File
  • Fitur
  • Fleksibilitas
  • Framework
  • Freelance
  • Frontend
  • Fungsional
  • Gambar
  • Game
  • Garansi
  • Generatif
  • Google
  • Gratis
  • Harga
  • Here are 5 categories
  • Here are 5 categories based on the article titles
  • Hosting
  • HTML
  • Ide
  • Implementasi
  • Indonesia
  • Industri
  • Inovasi
  • Inspirasi
  • Integrasi
  • Investasi
  • Jakarta
  • JavaScript
  • Kapasitas
  • Karir
  • Kasus
  • Keamanan
  • Keandalan
  • Keberhasilan
  • Kebutuhan
  • Kecepatan
  • Kepuasan
  • Kerugian
  • Kesehatan
  • Kinerja
  • Kolaborasi
  • Komunikasi
  • Komunitas
  • Konfigurasi
  • Konstruksi
  • Konten
  • Kota
  • Kreativitas
  • Kualitas
  • Kustomisasi
  • Laporan
  • Laravel
  • Layanan
  • Lokasi
  • Machine Learning
  • Mahasiswa
  • Manajemen
  • Manajemen Proyek
  • Manfaat
  • Manufaktur
  • Marketing
  • Masa Depan
  • Masyarakat
  • Media Sosial
  • Migrasi
  • Migration
  • Mobile
  • Model
  • Monitoring
  • Murah
  • Negosiasi
  • Node JS
  • Online
  • Open Source
  • Optimasi
  • Otentikasi
  • Otomatis
  • Otomatisasi
  • Otomotif
  • Panduan
  • Pariwisata
  • Payment Gateway
  • Pekerjaan
  • Pelajar
  • Pelanggan
  • Pelatihan
  • Peluang
  • Pemasaran
  • Pemrograman
  • Pemula
  • Pendidikan
  • Pengambilan Keputusan
  • Pengembangan
  • Pengguna
  • Penggunaan
  • Penghasilan
  • Penipuan
  • Penjualan
  • Perbandingan
  • Perbedaan
  • Performa
  • Personalisasi
  • Pertumbuhan
  • Perubahan
  • PHP
  • Pilihan
  • Plugin
  • Portfolio
  • Prediksi
  • Produktivitas
  • Profesional
  • Programmer
  • Promo
  • Prospek
  • Python
  • Queue
  • Rekomendasi
  • Responsive
  • Retensi
  • Review
  • SEO
  • Sertifikat
  • Server
  • Sistem
  • Skalabilitas
  • Skill
  • Software
  • Solusi
  • SSD
  • SSL
  • Stabilitas
  • Startup
  • Strategi
  • Syarat
  • Tanggung Jawab
  • Tantangan
  • Technology
  • Teknologi
  • Template
  • Terbaik
  • Terbaru
  • Terpercaya
  • Testimoni
  • Tips
  • Tools
  • Traffic
  • Trafik
  • Tren
  • Troubleshooting
  • Tutorial
  • UI
  • UKM
  • Unlimited
  • Upload
  • Uptime
  • using one word per category: Software
  • using only one word from the list provided per category
  • Validasi
  • Video
  • VPS
  • Web
  • Website
  • WordPress

Resource

  • About us
  • Contact Us
  • Privacy Policy

© 2024 tutwuri.

No Result
View All Result
  • Error generating categories
  • Hosting
  • Indonesia
  • Website
  • Laravel
  • Bisnis

© 2024 tutwuri.