Gameglimmer
  • AI
  • Laravel
  • Produktivitas
  • Database
  • Hosting
  • Website
No Result
View All Result
Gameglimmer
  • AI
  • Laravel
  • Produktivitas
  • Database
  • Hosting
  • Website
No Result
View All Result
Gameglimmer
No Result
View All Result
Home AI

Panduan Lengkap Membuat CRUD dengan Laravel: Tutorial Bahasa Indonesia

Atticus Thorne by Atticus Thorne
September 3, 2025
in AI, Database, Laravel, Panduan, Produktivitas
0
Share on FacebookShare on Twitter

Laravel, framework PHP yang elegan dan powerful, menjadi pilihan favorit para developer dalam membangun aplikasi web. Salah satu alasan utamanya adalah kemudahannya dalam mengimplementasikan operasi CRUD (Create, Read, Update, Delete), yang merupakan fondasi dari hampir semua aplikasi web. Apakah kamu ingin menguasai pembuatan CRUD dengan Laravel? Artikel “Panduan Lengkap Membuat CRUD dengan Laravel: Tutorial Bahasa Indonesia” ini hadir untuk membantumu!

Artikel ini akan memandu kamu langkah demi langkah, dari persiapan awal hingga implementasi lengkap, dengan bahasa yang mudah dipahami dan contoh kode yang jelas. Jadi, siapkan kopi dan semangatmu, mari kita mulai!

1. Pengantar CRUD dan Mengapa Penting dalam Pengembangan Web

Sebelum kita terjun ke kode, mari kita pahami dulu apa itu CRUD dan mengapa ia begitu penting. CRUD adalah singkatan dari:

  • Create: Membuat data baru.
  • Read: Membaca atau menampilkan data.
  • Update: Mengubah atau memperbarui data yang sudah ada.
  • Delete: Menghapus data.

Operasi CRUD adalah tulang punggung dari banyak aplikasi web, mulai dari aplikasi manajemen konten (CMS), sistem e-commerce, hingga aplikasi media sosial. Hampir semua aplikasi yang berinteraksi dengan basis data memerlukan implementasi CRUD.

Related Post

Belajar Web Development Gratis dari Nol: Manfaatkan Sumber Daya Online

December 6, 2025

Framework Web Development Terbaik untuk Pemula: Rekomendasi dari Para Ahli

December 5, 2025

Tutorial Web Development Pemula Bahasa Indonesia: Belajar HTML, CSS, & JavaScript

December 5, 2025

Kursus Web Development Online Bahasa Indonesia: Sertifikasi Resmi untuk Karier Impianmu

December 5, 2025

Menguasai CRUD memungkinkan developer untuk:

  • Mengelola data aplikasi dengan efisien.
  • Membangun antarmuka pengguna yang interaktif.
  • Membuat aplikasi web yang dinamis dan responsif.

Dengan Laravel, implementasi CRUD menjadi jauh lebih mudah dan cepat berkat fitur-fitur bawaan seperti ORM Eloquent, routing, dan templating engine Blade.

2. Persiapan Awal: Instalasi Laravel dan Konfigurasi Database

Sebelum kita bisa mulai membuat CRUD dengan Laravel, kita perlu memastikan bahwa lingkungan pengembangan kita sudah siap. Berikut adalah langkah-langkah persiapan awalnya:

a. Instalasi Laravel:

Pastikan kamu sudah menginstal PHP dan Composer di sistemmu. Composer adalah dependency manager untuk PHP yang akan kita gunakan untuk menginstal Laravel.

Buka terminal atau command prompt, dan jalankan perintah berikut untuk membuat proyek Laravel baru:

composer create-project laravel/laravel nama-proyek-crud

Ganti nama-proyek-crud dengan nama proyek yang kamu inginkan. Proses ini akan mengunduh dan menginstal semua dependencies yang dibutuhkan Laravel.

b. Konfigurasi Database:

Setelah instalasi selesai, kita perlu mengkonfigurasi koneksi ke database. Laravel mendukung berbagai jenis database seperti MySQL, PostgreSQL, SQLite, dan lainnya. Dalam tutorial ini, kita akan menggunakan MySQL sebagai contoh.

  1. Buat database MySQL baru. Kamu bisa menggunakan phpMyAdmin, MySQL Workbench, atau command line untuk membuat database baru. Misalnya, kita beri nama database kita db_crud.

  2. Buka file .env di direktori proyek Laravel. File ini berisi konfigurasi lingkungan untuk aplikasi kita.

  3. Ubah variabel konfigurasi database sesuai dengan database yang kamu buat. Cari bagian berikut dalam file .env:

    DB_CONNECTION=mysql
    DB_HOST=127.0.0.1
    DB_PORT=3306
    DB_DATABASE=laravel
    DB_USERNAME=root
    DB_PASSWORD=

    Ubah nilai-nilai tersebut sesuai dengan konfigurasi database MySQL kamu. Contoh:

    DB_CONNECTION=mysql
    DB_HOST=127.0.0.1
    DB_PORT=3306
    DB_DATABASE=db_crud
    DB_USERNAME=root
    DB_PASSWORD=password_database_anda

    Pastikan untuk mengganti password_database_anda dengan password yang benar.

c. Jalankan Server Pengembangan Laravel:

Setelah konfigurasi database selesai, kamu bisa menjalankan server pengembangan Laravel untuk melihat apakah aplikasi kita sudah berjalan dengan benar. Buka terminal dan jalankan perintah berikut:

php artisan serve

Ini akan menjalankan server pada alamat http://127.0.0.1:8000. Buka alamat ini di browser kamu. Jika kamu melihat halaman default Laravel, berarti instalasi dan konfigurasi sudah berhasil!

3. Membuat Model dan Migrasi: Definisi Struktur Database dengan Laravel

Setelah kita berhasil menyiapkan proyek Laravel, langkah selanjutnya adalah mendefinisikan struktur database yang akan kita gunakan. Di sini, kita akan membuat model dan migrasi. Model akan merepresentasikan tabel dalam database, sedangkan migrasi akan digunakan untuk membuat dan memodifikasi tabel secara otomatis.

Misalkan, kita akan membuat aplikasi untuk mengelola daftar buku. Kita akan membuat tabel books dengan kolom-kolom seperti title, author, dan publication_year.

a. Membuat Model dengan Artisan:

Gunakan perintah Artisan berikut untuk membuat model Book dan migrasinya secara bersamaan:

php artisan make:model Book -m

Perintah ini akan membuat dua file:

  • app/Models/Book.php: File model Book.
  • database/migrations/YYYY_MM_DD_HHMMSS_create_books_table.php: File migrasi untuk membuat tabel books.

b. Mendefinisikan Struktur Tabel dalam Migrasi:

Buka file migrasi yang baru saja dibuat (terletak di direktori database/migrations). Kamu akan melihat kode seperti ini:

<?php

use IlluminateDatabaseMigrationsMigration;
use IlluminateDatabaseSchemaBlueprint;
use IlluminateSupportFacadesSchema;

class CreateBooksTable extends Migration
{
    /**
     * Run the migrations.
     *
     * @return void
     */
    public function up()
    {
        Schema::create('books', function (Blueprint $table) {
            $table->id();
            $table->timestamps();
        });
    }

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

Di dalam method up(), kita mendefinisikan struktur tabel books. Kita perlu menambahkan kolom-kolom yang kita inginkan. Ubah kode tersebut menjadi seperti ini:

<?php

use IlluminateDatabaseMigrationsMigration;
use IlluminateDatabaseSchemaBlueprint;
use IlluminateSupportFacadesSchema;

class CreateBooksTable extends Migration
{
    /**
     * Run the migrations.
     *
     * @return void
     */
    public function up()
    {
        Schema::create('books', function (Blueprint $table) {
            $table->id();
            $table->string('title');
            $table->string('author');
            $table->integer('publication_year');
            $table->timestamps();
        });
    }

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

Kita menambahkan kolom title (tipe string), author (tipe string), dan publication_year (tipe integer). Fungsi $table->timestamps() akan otomatis menambahkan kolom created_at dan updated_at yang berguna untuk mencatat waktu pembuatan dan pembaruan data.

c. Menjalankan Migrasi:

Setelah kita mendefinisikan struktur tabel, kita perlu menjalankan migrasi untuk membuat tabel tersebut di database. Jalankan perintah berikut di terminal:

php artisan migrate

Perintah ini akan menjalankan semua migrasi yang belum dijalankan dan membuat tabel books di database kita.

d. Mengatur Fillable di Model:

Buka file model app/Models/Book.php. Kita perlu mengatur properti $fillable untuk menentukan kolom-kolom mana yang boleh diisi secara massal (misalnya, saat membuat data baru). Tambahkan kode berikut ke dalam kelas Book:

<?php

namespace AppModels;

use IlluminateDatabaseEloquentFactoriesHasFactory;
use IlluminateDatabaseEloquentModel;

class Book extends Model
{
    use HasFactory;

    protected $fillable = ['title', 'author', 'publication_year'];
}

Dengan mengatur $fillable, kita mencegah mass assignment vulnerability yang bisa membahayakan keamanan aplikasi kita.

4. Membuat Controller: Logika Aplikasi untuk Operasi CRUD

Controller adalah jantung dari aplikasi Laravel kita. Di sini, kita akan menulis logika aplikasi untuk menangani operasi CRUD pada tabel books.

a. Membuat Controller dengan Artisan:

Gunakan perintah Artisan berikut untuk membuat controller BookController:

php artisan make:controller BookController --resource

Opsi --resource akan membuat controller dengan method–method dasar untuk operasi CRUD, yaitu:

  • index(): Menampilkan daftar semua buku.
  • create(): Menampilkan form untuk membuat buku baru.
  • store(): Menyimpan buku baru ke database.
  • show(): Menampilkan detail sebuah buku.
  • edit(): Menampilkan form untuk mengedit buku yang sudah ada.
  • update(): Memperbarui buku yang sudah ada di database.
  • destroy(): Menghapus buku dari database.

b. Implementasi Method Controller:

Buka file app/Http/Controllers/BookController.php. Kita akan mengimplementasikan method–method tersebut satu per satu.

1. index() (Menampilkan Daftar Buku):

<?php

namespace AppHttpControllers;

use AppModelsBook;
use IlluminateHttpRequest;

class BookController extends Controller
{
    /**
     * Display a listing of the resource.
     *
     * @return IlluminateHttpResponse
     */
    public function index()
    {
        $books = Book::all(); // Mengambil semua data buku dari database
        return view('books.index', compact('books')); // Mengirim data buku ke view 'books.index'
    }

    // ... method lainnya ...
}

Kode ini mengambil semua data buku dari database menggunakan Book::all() dan mengirimkannya ke view books.index. Kita akan membuat view ini nanti.

2. create() (Menampilkan Form Pembuatan Buku):

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

Kode ini menampilkan view books.create yang berisi form untuk membuat buku baru.

3. store() (Menyimpan Buku Baru):

    /**
     * Store a newly created resource in storage.
     *
     * @param  IlluminateHttpRequest  $request
     * @return IlluminateHttpResponse
     */
    public function store(Request $request)
    {
        // Validasi data yang diterima dari form
        $request->validate([
            'title' => 'required',
            'author' => 'required',
            'publication_year' => 'required|integer',
        ]);

        // Membuat instance Book baru dan mengisi datanya
        Book::create($request->all());

        // Redirect ke halaman daftar buku dengan pesan sukses
        return redirect()->route('books.index')
                         ->with('success','Buku berhasil ditambahkan.');
    }

Kode ini:

  • Memvalidasi data yang diterima dari form menggunakan $request->validate(). Kita memastikan bahwa kolom title, author, dan publication_year wajib diisi dan publication_year harus berupa angka (integer).
  • Membuat instance Book baru dan mengisi datanya dengan data yang diterima dari form menggunakan Book::create($request->all()). Perhatikan bahwa ini hanya berfungsi karena kita sudah mengatur properti $fillable di model Book.
  • Me-redirect ke halaman daftar buku (books.index) dengan pesan sukses menggunakan redirect()->route('books.index')->with('success','Buku berhasil ditambahkan.').

4. show() (Menampilkan Detail Buku):

    /**
     * Display the specified resource.
     *
     * @param  AppModelsBook  $book
     * @return IlluminateHttpResponse
     */
    public function show(Book $book)
    {
        return view('books.show',compact('book')); // Menampilkan view 'books.show' dengan data buku
    }

Kode ini mengambil data buku berdasarkan ID dan mengirimkannya ke view books.show.

5. edit() (Menampilkan Form Edit Buku):

    /**
     * Show the form for editing the specified resource.
     *
     * @param  AppModelsBook  $book
     * @return IlluminateHttpResponse
     */
    public function edit(Book $book)
    {
        return view('books.edit',compact('book')); // Menampilkan view 'books.edit' dengan data buku untuk diedit
    }

Kode ini menampilkan view books.edit yang berisi form untuk mengedit data buku yang sudah ada.

6. update() (Memperbarui Buku):

    /**
     * Update the specified resource in storage.
     *
     * @param  IlluminateHttpRequest  $request
     * @param  AppModelsBook  $book
     * @return IlluminateHttpResponse
     */
    public function update(Request $request, Book $book)
    {
        // Validasi data yang diterima dari form
        $request->validate([
            'title' => 'required',
            'author' => 'required',
            'publication_year' => 'required|integer',
        ]);

        // Memperbarui data buku
        $book->update($request->all());

        // Redirect ke halaman daftar buku dengan pesan sukses
        return redirect()->route('books.index')
                         ->with('success','Buku berhasil diperbarui.');
    }

Kode ini mirip dengan method store(), tetapi perbedaannya adalah kita menggunakan method update() pada instance Book yang sudah ada untuk memperbarui datanya.

7. destroy() (Menghapus Buku):

    /**
     * Remove the specified resource from storage.
     *
     * @param  AppModelsBook  $book
     * @return IlluminateHttpResponse
     */
    public function destroy(Book $book)
    {
        $book->delete(); // Menghapus data buku

        // Redirect ke halaman daftar buku dengan pesan sukses
        return redirect()->route('books.index')
                         ->with('success','Buku berhasil dihapus.');
    }

Kode ini menghapus data buku dari database menggunakan method delete() dan me-redirect ke halaman daftar buku dengan pesan sukses.

5. Membuat View dengan Blade: Menampilkan Data dan Form ke Pengguna

Sekarang, kita perlu membuat view untuk menampilkan data dan form kepada pengguna. Kita akan menggunakan templating engine Blade yang disediakan oleh Laravel.

a. Membuat Direktori View:

Buat direktori books di dalam direktori resources/views. Di dalam direktori ini, kita akan membuat file-file view untuk operasi CRUD.

b. Membuat File View:

  1. resources/views/books/index.blade.php (Daftar Buku):

    <!DOCTYPE html>
    <html>
    <head>
        <title>Daftar Buku</title>
        <link rel="stylesheet" href="https://stackpath.bootstrapcdn.com/bootstrap/4.5.2/css/bootstrap.min.css">
    </head>
    <body>
    <div class="container mt-2">
        <div class="row">
            <div class="col-lg-12 margin-tb">
                <div class="pull-left">
                    <h2>Daftar Buku</h2>
                </div>
                <div class="pull-right mb-2">
                    <a class="btn btn-success" href="{{ route('books.create') }}"> Buat Buku Baru</a>
                </div>
            </div>
        </div>
        @if ($message = Session::get('success'))
            <div class="alert alert-success">
                <p>{{ $message }}</p>
            </div>
        @endif
        <table class="table table-bordered">
            <tr>
                <th>ID</th>
                <th>Judul</th>
                <th>Penulis</th>
                <th>Tahun Terbit</th>
                <th width="280px">Aksi</th>
            </tr>
            @foreach ($books as $book)
                <tr>
                    <td>{{ $book->id }}</td>
                    <td>{{ $book->title }}</td>
                    <td>{{ $book->author }}</td>
                    <td>{{ $book->publication_year }}</td>
                    <td>
                        <form action="{{ route('books.destroy',$book->id) }}" method="Post">
                            <a class="btn btn-primary" href="{{ route('books.edit',$book->id) }}">Edit</a>
                            @csrf
                            @method('DELETE')
                            <button type="submit" class="btn btn-danger">Hapus</button>
                        </form>
                    </td>
                </tr>
            @endforeach
        </table>
    </div>
    </body>
    </html>

    Kode ini menampilkan daftar buku dalam bentuk tabel. Ia juga menampilkan tombol untuk membuat buku baru, mengedit buku yang sudah ada, dan menghapus buku. Kita menggunakan loop @foreach untuk menampilkan setiap buku dalam tabel.

  2. resources/views/books/create.blade.php (Form Pembuatan Buku):

    <!DOCTYPE html>
    <html>
    <head>
        <title>Buat Buku Baru</title>
        <link rel="stylesheet" href="https://stackpath.bootstrapcdn.com/bootstrap/4.5.2/css/bootstrap.min.css">
    </head>
    <body>
    <div class="container mt-2">
        <div class="row">
            <div class="col-lg-12 margin-tb">
                <div class="pull-left">
                    <h2>Buat Buku Baru</h2>
                </div>
                <div class="pull-right">
                    <a class="btn btn-primary" href="{{ route('books.index') }}"> Kembali</a>
                </div>
            </div>
        </div>
        @if(session('status'))
            <div class="alert alert-success mb-1 mt-1">
                {{ session('status') }}
            </div>
        @endif
        <form action="{{ route('books.store') }}" method="POST" enctype="multipart/form-data">
            @csrf
            <div class="row">
                <div class="col-xs-12 col-sm-12 col-md-12">
                    <div class="form-group">
                        <strong>Judul Buku:</strong>
                        <input type="text" name="title" class="form-control" placeholder="Judul Buku">
                        @error('title')
                        <div class="alert alert-danger mt-1 mb-1">{{ $message }}</div>
                        @enderror
                    </div>
                </div>
                <div class="col-xs-12 col-sm-12 col-md-12">
                    <div class="form-group">
                        <strong>Penulis:</strong>
                        <input type="text" name="author" class="form-control" placeholder="Penulis">
                        @error('author')
                        <div class="alert alert-danger mt-1 mb-1">{{ $message }}</div>
                        @enderror
                    </div>
                </div>
                <div class="col-xs-12 col-sm-12 col-md-12">
                    <div class="form-group">
                        <strong>Tahun Terbit:</strong>
                        <input type="number" name="publication_year" class="form-control" placeholder="Tahun Terbit">
                        @error('publication_year')
                        <div class="alert alert-danger mt-1 mb-1">{{ $message }}</div>
                        @enderror
                    </div>
                </div>
                <div class="col-xs-12 col-sm-12 col-md-12">
                    <button type="submit" class="btn btn-primary ml-3">Submit</button>
                </div>
            </div>
        </form>
    </div>
    </body>
    </html>

    Kode ini menampilkan form untuk membuat buku baru. Ia memiliki input untuk judul, penulis, dan tahun terbit. Kita menggunakan directive @error untuk menampilkan pesan error validasi jika ada.

  3. resources/views/books/edit.blade.php (Form Edit Buku):

    <!DOCTYPE html>
    <html>
    <head>
        <title>Edit Buku</title>
        <link rel="stylesheet" href="https://stackpath.bootstrapcdn.com/bootstrap/4.5.2/css/bootstrap.min.css">
    </head>
    <body>
    <div class="container mt-2">
        <div class="row">
            <div class="col-lg-12 margin-tb">
                <div class="pull-left">
                    <h2>Edit Buku</h2>
                </div>
                <div class="pull-right">
                    <a class="btn btn-primary" href="{{ route('books.index') }}"> Kembali</a>
                </div>
            </div>
        </div>
        @if(session('status'))
            <div class="alert alert-success mb-1 mt-1">
                {{ session('status') }}
            </div>
        @endif
        <form action="{{ route('books.update',$book->id) }}" method="POST" enctype="multipart/form-data">
            @csrf
            @method('PUT')
            <div class="row">
                <div class="col-xs-12 col-sm-12 col-md-12">
                    <div class="form-group">
                        <strong>Judul Buku:</strong>
                        <input type="text" name="title" value="{{ $book->title }}" class="form-control" placeholder="Judul Buku">
                        @error('title')
                        <div class="alert alert-danger mt-1 mb-1">{{ $message }}</div>
                        @enderror
                    </div>
                </div>
                <div class="col-xs-12 col-sm-12 col-md-12">
                    <div class="form-group">
                        <strong>Penulis:</strong>
                        <input type="text" name="author" value="{{ $book->author }}" class="form-control" placeholder="Penulis">
                        @error('author')
                        <div class="alert alert-danger mt-1 mb-1">{{ $message }}</div>
                        @enderror
                    </div>
                </div>
                <div class="col-xs-12 col-sm-12 col-md-12">
                    <div class="form-group">
                        <strong>Tahun Terbit:</strong>
                        <input type="number" name="publication_year" value="{{ $book->publication_year }}" class="form-control" placeholder="Tahun Terbit">
                        @error('publication_year')
                        <div class="alert alert-danger mt-1 mb-1">{{ $message }}</div>
                        @enderror
                    </div>
                </div>
                <div class="col-xs-12 col-sm-12 col-md-12">
                    <button type="submit" class="btn btn-primary ml-3">Update</button>
                </div>
            </div>
        </form>
    </div>
    </body>
    </html>

    Kode ini mirip dengan form pembuatan buku, tetapi perbedaannya adalah kita menampilkan data buku yang sudah ada sebagai nilai default pada input–input form. Kita juga menggunakan method PUT untuk mengirimkan request pembaruan data.

  4. resources/views/books/show.blade.php (Detail Buku):

    <!DOCTYPE html>
    <html>
    <head>
        <title>Detail Buku</title>
        <link rel="stylesheet" href="https://stackpath.bootstrapcdn.com/bootstrap/4.5.2/css/bootstrap.min.css">
    </head>
    <body>
    <div class="container mt-2">
        <div class="row">
            <div class="col-lg-12 margin-tb">
                <div class="pull-left">
                    <h2>Detail Buku</h2>
                </div>
                <div class="pull-right">
                    <a class="btn btn-primary" href="{{ route('books.index') }}"> Kembali</a>
                </div>
            </div>
        </div>
        <div class="row">
            <div class="col-xs-12 col-sm-12 col-md-12">
                <div class="form-group">
                    <strong>Judul:</strong>
                    {{ $book->title }}
                </div>
            </div>
            <div class="col-xs-12 col-sm-12 col-md-12">
                <div class="form-group">
                    <strong>Penulis:</strong>
                    {{ $book->author }}
                </div>
            </div>
            <div class="col-xs-12 col-sm-12 col-md-12">
                <div class="form-group">
                    <strong>Tahun Terbit:</strong>
                    {{ $book->publication_year }}
                </div>
            </div>
        </div>
    </div>
    </body>
    </html>

    Kode ini menampilkan detail informasi buku seperti judul, penulis, dan tahun terbit.

6. Menentukan Route: Menghubungkan URL dengan Controller

Langkah terakhir adalah menentukan route yang akan menghubungkan URL dengan method–method di controller kita.

a. Membuka File routes/web.php:

Buka file routes/web.php. Di sini, kita akan mendefinisikan route untuk operasi CRUD kita.

b. Menambahkan Route Resource:

Laravel menyediakan route resource yang mempermudah kita untuk membuat route untuk operasi CRUD. Tambahkan kode berikut ke dalam file routes/web.php:

<?php

use IlluminateSupportFacadesRoute;
use AppHttpControllersBookController;

/*
|--------------------------------------------------------------------------
| 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::get('/', function () {
    return view('welcome');
});

Route::resource('books', BookController::class);

Kode Route::resource('books', BookController::class) akan otomatis membuat route–route berikut:

  • GET /books: Menjalankan method index() di BookController.
  • GET /books/create: Menjalankan method create() di BookController.
  • POST /books: Menjalankan method store() di BookController.
  • GET /books/{book}: Menjalankan method show() di BookController.
  • GET /books/{book}/edit: Menjalankan method edit() di BookController.
  • PUT /books/{book}: Menjalankan method update() di BookController.
  • DELETE /books/{book}: Menjalankan method destroy() di BookController.

7. Uji Coba Aplikasi CRUD: Memastikan Semuanya Berjalan Lancar

Selamat! Kamu sudah berhasil membuat aplikasi CRUD dengan Laravel. Sekarang, mari kita uji coba untuk memastikan semuanya berjalan lancar.

  1. Buka browser kamu dan kunjungi alamat http://127.0.0..1:8000/books. Kamu akan melihat halaman daftar buku.
  2. Klik tombol “Buat Buku Baru”. Kamu akan melihat form untuk membuat buku baru.
  3. Isi form dengan data buku dan klik tombol “Submit”. Kamu akan di-redirect ke halaman daftar buku dan melihat buku yang baru kamu buat sudah ada di dalam tabel.
  4. Klik tombol “Edit” pada salah satu buku. Kamu akan melihat form untuk mengedit data buku tersebut.
  5. Ubah data buku dan klik tombol “Update”. Kamu akan di-redirect ke halaman daftar buku dan melihat data buku yang kamu ubah sudah diperbarui.
  6. Klik tombol “Hapus” pada salah satu buku. Kamu akan di-redirect ke halaman daftar buku dan melihat buku tersebut sudah dihapus dari tabel.

Jika semua langkah di atas berjalan dengan lancar, berarti aplikasi CRUD kamu sudah berfungsi dengan baik!

8. Optimasi CRUD dengan Eloquent: Query Database yang Lebih Efisien

Eloquent ORM (Object-Relational Mapper) adalah fitur andalan Laravel yang memungkinkan kita berinteraksi dengan database menggunakan sintaks yang lebih mudah dibaca dan dipahami. Dengan Eloquent, kita bisa melakukan query database yang kompleks dengan kode yang lebih ringkas.

a. Menggunakan Scopes:

Scopes memungkinkan kita untuk mendefinisikan query yang sering digunakan dan menggunakannya kembali di berbagai tempat. Misalnya, kita ingin membuat scope untuk mengambil buku-buku yang terbit setelah tahun tertentu. Tambahkan kode berikut ke dalam model Book:

<?php

namespace AppModels;

use IlluminateDatabaseEloquentFactoriesHasFactory;
use IlluminateDatabaseEloquentModel;

class Book extends Model
{
    use HasFactory;

    protected $fillable = ['title', 'author', 'publication_year'];

    public function scopePublishedAfter($query, $year)
    {
        return $query->where('publication_year', '>', $year);
    }
}

Sekarang, kita bisa menggunakan scope ini di controller kita:

$books = Book::publishedAfter(2000)->get();

Kode ini akan mengambil semua buku yang terbit setelah tahun 2000.

b. Menggunakan Eager Loading:

Eager loading memungkinkan kita untuk mengambil relationships antara tabel secara bersamaan, sehingga mengurangi jumlah query yang dieksekusi ke database. Misalnya, jika kita memiliki relationship antara tabel books dan tabel categories, kita bisa menggunakan eager loading untuk mengambil data buku beserta kategori-kategorinya dalam satu query.

$books = Book::with('categories')->get();

Kode ini akan mengambil semua data buku beserta kategori-kategorinya.

9. Validasi Data yang Lebih Kompleks: Memastikan Data yang Masuk Valid

Validasi data adalah bagian penting dari pengembangan aplikasi web. Kita perlu memastikan bahwa data yang masuk ke database kita valid dan sesuai dengan aturan yang kita definisikan. Laravel menyediakan fitur validasi yang powerful dan fleksibel.

a. Menggunakan Form Request:

Form request adalah kelas khusus yang digunakan untuk melakukan validasi data. Dengan form request, kita bisa memisahkan logika validasi dari controller, sehingga kode kita menjadi lebih bersih dan terstruktur.

Untuk membuat form request, gunakan perintah Artisan berikut:

php artisan make:request StoreBookRequest

Perintah ini akan membuat file app/Http/Requests/StoreBookRequest.php. Di dalam file ini, kita bisa mendefinisikan aturan validasi yang kita inginkan.

b. Mendefinisikan Aturan Validasi di Form Request:

Buka file app/Http/Requests/StoreBookRequest.php dan ubah method rules() menjadi seperti ini:

<?php

namespace AppHttpRequests;

use IlluminateFoundationHttpFormRequest;

class StoreBookRequest extends FormRequest
{
    /**
     * Determine if the user is authorized to make this request.
     *
     * @return bool
     */
    public function authorize()
    {
        return true; // Ubah menjadi true jika tidak menggunakan otorisasi
    }

    /**
     * Get the validation rules that apply to the request.
     *
     * @return array
     */
    public function rules()
    {
        return [
            'title' => 'required|max:255',
            'author' => 'required|max:255',
            'publication_year' => 'required|integer|min:1900|max:' . date('Y'),
        ];
    }
}

Kode ini mendefinisikan aturan validasi berikut:

  • title wajib diisi dan panjangnya maksimal 255 karakter.
  • author wajib diisi dan panjangnya maksimal 255 karakter.
  • publication_year wajib diisi, harus berupa integer, minimal 1900, dan maksimal tahun saat ini.

c. Menggunakan Form Request di Controller:

Untuk menggunakan form request di controller, cukup type hint form request tersebut di method store() dan update():

    public function store(StoreBookRequest $request)
    {
        Book::create($request->all());

        return redirect()->route('books.index')
                         ->with('success','Buku berhasil ditambahkan.');
    }

    public function update(StoreBookRequest $request, Book $book)
    {
        $book->update($request->all());

        return redirect()->route('books.index')
                         ->with('success','Buku berhasil diperbarui.');
    }

Laravel akan secara otomatis menjalankan validasi berdasarkan aturan yang kita definisikan di form request. Jika validasi gagal, Laravel akan me-redirect kembali ke form dengan pesan error.

10. Keamanan Aplikasi CRUD: Mencegah Serangan XSS dan SQL Injection

Keamanan adalah aspek krusial dalam pengembangan aplikasi web. Kita perlu melindungi aplikasi kita dari berbagai serangan seperti XSS (Cross-Site Scripting) dan SQL Injection.

a. Mencegah XSS:

XSS adalah serangan di mana penyerang menyuntikkan kode JavaScript berbahaya ke dalam aplikasi kita. Untuk mencegah XSS, kita perlu melakukan escaping terhadap semua data yang ditampilkan ke pengguna. Blade secara otomatis melakukan escaping terhadap data yang ditampilkan menggunakan syntax {{ $data }}. Jika kita ingin menampilkan data tanpa escaping, kita bisa menggunakan syntax {!! $data !!}. Namun, penggunaan syntax ini harus sangat hati-hati dan hanya digunakan jika kita yakin bahwa data tersebut aman.

b. Mencegah SQL Injection:

SQL Injection adalah serangan di mana penyerang menyuntikkan kode SQL berbahaya ke dalam query database kita. Eloquent secara otomatis melindungi kita dari SQL Injection karena ia menggunakan parameter binding untuk melakukan query database. Dengan parameter binding, data yang kita masukkan ke dalam query akan di-escape secara otomatis, sehingga mencegah penyerang menyuntikkan kode SQL berbahaya.

Kesimpulan: Menguasai CRUD dengan Laravel untuk Pengembangan Web yang Lebih Cepat

“

Tags: bahasa indonesiaCRUDDevelopmentFrameworkLaravelpemrograman webphpProgrammingTutorialWeb Development
Atticus Thorne

Atticus Thorne

Related Posts

AI

Belajar Web Development Gratis dari Nol: Manfaatkan Sumber Daya Online

by Jasper Blackwood
December 6, 2025
AI

Framework Web Development Terbaik untuk Pemula: Rekomendasi dari Para Ahli

by Luna Abernathy
December 5, 2025
AI

Tutorial Web Development Pemula Bahasa Indonesia: Belajar HTML, CSS, & JavaScript

by Jasper Blackwood
December 5, 2025
Next Post

Hosting Murah Terbaik: Panduan Lengkap untuk Website Indonesia Anda

Leave a Reply Cancel reply

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

Recommended

Hosting Domain Gratis Indonesia: Mulai Online Tanpa Biaya Tambahan

August 22, 2025

Template Admin Dashboard Gratis untuk Laravel: Hemat Waktu dan Biaya!

July 4, 2025

Kursus Web Development Online Bahasa Indonesia: Belajar dari Nol Hingga Mahir

September 15, 2025

Hosting Domain Gratis untuk Pelajar Indonesia: Syarat & Cara Mendapatkan

March 23, 2025

Hosting Murah dengan Dukungan Multi Bahasa (Indonesia & Inggris)

December 15, 2025

Hosting Murah dengan Optimasi Kecepatan Website Terbaik

December 15, 2025

Hosting Murah dengan Fitur Keamanan Website yang Lengkap

December 15, 2025

Hosting Murah dengan Bandwidth Unlimited untuk Pengguna Indonesia

December 15, 2025

Gameglimmer

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

  • Hosting Murah dengan Dukungan Multi Bahasa (Indonesia & Inggris)
  • Hosting Murah dengan Optimasi Kecepatan Website Terbaik
  • Hosting Murah dengan Fitur Keamanan Website yang Lengkap

Categories

  • AI
  • Akuntansi
  • Akurasi
  • Analisis
  • and "Cara Mengintegrasikan Laravel dengan Database MySQL: Panduan Lengkap": Hosting
  • Android
  • Animasi
  • API
  • Aplikasi
  • Authentication
  • Backup
  • Bahasa
  • Bandwidth
  • based on the article title "Cara Menggunakan AI untuk Meningkatkan Produktivitas Kerja: Lebih Cerdas
  • Based on the article title "Cara Mengintegrasikan Laravel dengan Database MySQL: Panduan Lengkap"
  • Based on the provided keywords and article titles
  • Biaya
  • Bisnis
  • Blog
  • Bootstrap
  • Branding
  • Cerdas
  • Chatbot
  • Cloud
  • Coding
  • Community
  • CRM
  • CSS
  • Customer
  • Data
  • Database
  • Deployment
  • Desain
  • Development
  • Digital**
  • Domain
  • Download
  • E-commerce
  • Editing
  • Efektif
  • Efektivitas
  • Efisien
  • Efisiensi
  • Email
  • Error
  • Error generating categories
  • Estimasi
  • Etika
  • Evaluasi
  • Fitur
  • Foto
  • Framework
  • Freelance
  • Garansi
  • Gratis
  • Harga
  • Hasil
  • Hemat
  • Here are 5 categories
  • here are 5 categories: Laravel
  • here are five categories: Branding
  • Here's a categorization based on the article titles and provided keywords: **Development
  • Here's a categorization based on the article titles and provided keywords: **Laravel
  • Here's a categorization based on the article titles and provided keywords: **Online
  • Here's a categorization based on the article titles and provided keywords: **Panduan
  • Here's a categorization based on the article titles and provided keywords: **Pekerjaan
  • Here's a categorization based on the article titles and provided keywords: **Penjualan
  • Here's a categorization based on the article titles and provided keywords: **Server
  • Here's a categorization based on the article titles and provided keywords: **Web Development
  • Here's a categorization based on the article titles and provided keywords: **Website
  • Here's a categorization based on the article titles and provided keywords: CRM
  • Here's a categorization based on the article titles and provided keywords: E-commerce
  • Here's a categorization based on the article titles and provided keywords: Hosting
  • Here's a categorization based on the article titles and provided keywords: Pendidikan
  • Here's a categorization based on the article titles and provided keywords: Website
  • Here's a categorization based on the provided keywords and article titles: **Web Development
  • Here's a possible categorization based on the article titles and provided keywords: Hosting
  • Here's a possible categorization based on the article titles and provided keywords: Laravel
  • Here's a possible categorization based on the article titles and provided keywords: Produktivitas
  • Here's a possible categorization based on the article titles and provided keywords: Website
  • Here's a possible categorization based on the provided keywords and article titles: Hosting
  • Hosting
  • Hukum
  • Ide
  • Implementasi
  • Indonesia
  • Inspirasi
  • Integrasi
  • iOS
  • Jakarta
  • JavaScript
  • Kampanye
  • Karir
  • Keamanan
  • Kecepatan
  • Keperluan
  • Kerja
  • Kesehatan
  • Kolaborasi
  • Konten
  • Kualitas
  • Laravel
  • Layanan
  • Lebih Cepat": AI
  • Library
  • Logo
  • Lokal
  • Machine Learning
  • Manajemen
  • Marketing
  • Mobile
  • Murah
  • MySQL
  • one word per category
  • Online
  • Open Source
  • Optimasi
  • Otentikasi
  • Otomatis
  • Otomatisasi
  • Panduan
  • Pelajar
  • Pelanggan
  • Pelaporan
  • Pelatihan
  • Peluang
  • Pemasaran
  • Pembayaran
  • Pemula
  • Pendidikan
  • Pengembangan
  • Penipuan
  • Penjualan
  • Perbandingan
  • Performance
  • Pertumbuhan
  • PHP
  • Pilihan
  • Portfolio
  • Prima
  • Privasi
  • Productivity
  • Produktifitas
  • Produktivitas
  • Profesional
  • Python
  • Queue
  • Rekomendasi
  • Responsif
  • Retail
  • Review
  • Riset
  • SEO
  • Server
  • Sistem
  • Skalabilitas
  • Software
  • Solusi
  • SSL
  • Startup
  • Strategi
  • Streaming
  • Studi Kasus
  • Sukses
  • Support
  • Tantangan
  • Teknologi
  • Template
  • TensorFlow
  • Terbaik
  • Terpercaya
  • Tips
  • Tools
  • Transfer
  • Transkripsi
  • Tutorial
  • UKM
  • UMKM
  • Unlimited
  • Uptime
  • Video
  • VPS
  • Web Development
  • Website
  • Windows
  • WooCommerce
  • WordPress
  • XAMPP

Resource

  • About us
  • Contact Us
  • Privacy Policy

© 2024 Gameglimmer.

No Result
View All Result
  • AI
  • Laravel
  • Produktivitas
  • Database
  • Hosting
  • Website

© 2024 Gameglimmer.