m.techreview.click
  • Website
  • Indonesia
  • Laravel
  • Hosting
  • AI
  • Development
No Result
View All Result
m.techreview.click
  • Website
  • Indonesia
  • Laravel
  • Hosting
  • AI
  • Development
No Result
View All Result
m.techreview.click
No Result
View All Result
Home Contoh

Cara Membuat CRUD dengan Laravel 9: Contoh Kode dan Penjelasan Lengkap

Finnian by Finnian
May 31, 2025
in Contoh, Developer, Laravel, Pemrograman, Tutorial
0
Share on FacebookShare on Twitter

Laravel 9 adalah framework PHP yang powerful dan elegan, sangat populer di kalangan developer web. Salah satu alasan popularitasnya adalah kemudahannya dalam melakukan operasi CRUD (Create, Read, Update, Delete) pada database. Apakah kamu ingin memahami cara membuat CRUD dengan Laravel 9? Artikel ini akan membimbingmu langkah demi langkah dengan contoh kode yang jelas dan penjelasan lengkap. Mari kita mulai!

1. Apa Itu CRUD dan Mengapa Penting dalam Pengembangan Web?

Sebelum kita masuk ke kode, penting untuk memahami konsep dasar CRUD. CRUD adalah singkatan dari:

  • Create: Membuat data baru.
  • Read: Membaca data yang sudah ada.
  • Update: Memperbarui data yang sudah ada.
  • Delete: Menghapus data.

Operasi CRUD adalah fondasi dari hampir semua aplikasi web. Bayangkan sebuah aplikasi blog. Kamu perlu membuat postingan (Create), melihat daftar postingan (Read), mengedit postingan (Update), dan menghapus postingan (Delete). Tanpa CRUD, aplikasi tersebut tidak akan berfungsi dengan baik. Memahami proses CRUD di Laravel 9 akan mempercepat pengembangan aplikasi webmu secara signifikan.

2. Persiapan Awal: Instalasi Laravel 9 dan Konfigurasi Database

Sebelum memulai coding, pastikan kamu sudah menginstal Laravel 9 di komputermu dan telah mengkonfigurasi koneksi ke database. Berikut adalah langkah-langkah umumnya:

Related Post

Membuat API Authentication dengan Laravel Sanctum: Panduan Lengkap

June 26, 2025

Top 5 Package Laravel yang Mempermudah Pengembangan Website Anda

June 26, 2025

Cara Menggunakan Laravel Eloquent untuk Query Database: Panduan Lengkap

June 25, 2025

Tutorial Membuat CRUD dengan Laravel untuk Pemula: Step-by-Step

June 25, 2025
  1. Pastikan PHP dan Composer Terinstall: Laravel membutuhkan PHP (minimal versi 8.0) dan Composer (dependency manager untuk PHP). Pastikan keduanya sudah terinstall dan dikonfigurasi dengan benar.

  2. Buat Proyek Laravel Baru: Buka terminal dan jalankan perintah berikut untuk membuat proyek Laravel baru. Ganti nama-proyek dengan nama proyek yang kamu inginkan:

    composer create-project laravel/laravel nama-proyek
  3. Konfigurasi Database: Setelah proyek dibuat, buka file .env di root direktori proyek. Cari bagian konfigurasi database (diawali dengan DB_). Sesuaikan nilai-nilai berikut sesuai dengan database yang kamu gunakan:

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

    Ganti nama_database, username_database, dan password_database dengan kredensial yang sesuai.

  4. Migrasi Database: Laravel menggunakan migrations untuk membuat dan memodifikasi struktur database. Kita akan membuat migration untuk tabel yang akan kita gunakan dalam contoh ini. Pastikan database sudah dibuat di MySQL sebelum menjalankan perintah ini.

3. Membuat Model dan Migration untuk Entitas Kita (Contoh: Buku)

Dalam contoh ini, kita akan membuat CRUD untuk entitas “Buku”. Mari kita buat model dan migration untuk entitas ini.

  1. Membuat Model dan Migration: Gunakan perintah Artisan untuk membuat model dan migration secara bersamaan:

    php artisan make:model Buku -m

    Perintah ini akan membuat dua file:

    • app/Models/Buku.php (Model)
    • database/migrations/[tanggal_buat]_create_bukus_table.php (Migration)
  2. Modifikasi Migration: Buka file migration yang baru dibuat (database/migrations/[tanggal_buat]_create_bukus_table.php). Modifikasi method up() untuk mendefinisikan struktur tabel bukus. Contoh:

    <?php
    
    use IlluminateDatabaseMigrationsMigration;
    use IlluminateDatabaseSchemaBlueprint;
    use IlluminateSupportFacadesSchema;
    
    return new class extends Migration
    {
        /**
         * Run the migrations.
         *
         * @return void
         */
        public function up()
        {
            Schema::create('bukus', function (Blueprint $table) {
                $table->id();
                $table->string('judul');
                $table->string('penulis');
                $table->text('deskripsi')->nullable();
                $table->integer('tahun_terbit');
                $table->timestamps();
            });
        }
    
        /**
         * Reverse the migrations.
         *
         * @return void
         */
        public function down()
        {
            Schema::dropIfExists('bukus');
        }
    };

    Dalam contoh ini, tabel bukus memiliki kolom id (primary key), judul (string), penulis (string), deskripsi (text, opsional), dan tahun_terbit (integer).

  3. Jalankan Migrasi: Setelah migration dimodifikasi, jalankan perintah berikut untuk membuat tabel di database:

    php artisan migrate
  4. Modifikasi Model (Opsional): Buka file model app/Models/Buku.php. Kamu bisa menambahkan properti $fillable untuk menentukan kolom mana saja yang boleh diisi saat membuat data baru. Contoh:

    <?php
    
    namespace AppModels;
    
    use IlluminateDatabaseEloquentFactoriesHasFactory;
    use IlluminateDatabaseEloquentModel;
    
    class Buku extends Model
    {
        use HasFactory;
    
        protected $fillable = [
            'judul',
            'penulis',
            'deskripsi',
            'tahun_terbit',
        ];
    }

4. Membuat Controller untuk Menangani Logika CRUD

Controller adalah tempat kita akan menulis logika untuk operasi CRUD. Kita akan membuat controller bernama BukuController.

  1. Membuat Controller: Gunakan perintah Artisan untuk membuat controller:

    php artisan make:controller BukuController

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

  2. Implementasi Method CRUD di Controller: Buka file app/Http/Controllers/BukuController.php dan implementasikan method-method berikut:

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

Berikut contoh kode untuk BukuController.php:

<?php

namespace AppHttpControllers;

use AppModelsBuku;
use IlluminateHttpRequest;

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

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

    /**
     * Store a newly created resource in storage.
     *
     * @param  IlluminateHttpRequest  $request
     * @return IlluminateHttpResponse
     */
    public function store(Request $request)
    {
        $request->validate([
            'judul' => 'required',
            'penulis' => 'required',
            'tahun_terbit' => 'required|integer',
        ]);

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

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

    /**
     * Display the specified resource.
     *
     * @param  AppModelsBuku  $buku
     * @return IlluminateHttpResponse
     */
    public function show(Buku $buku)
    {
        return view('bukus.show',compact('buku'));
    }

    /**
     * Show the form for editing the specified resource.
     *
     * @param  AppModelsBuku  $buku
     * @return IlluminateHttpResponse
     */
    public function edit(Buku $buku)
    {
        return view('bukus.edit',compact('buku'));
    }

    /**
     * Update the specified resource in storage.
     *
     * @param  IlluminateHttpRequest  $request
     * @param  AppModelsBuku  $buku
     * @return IlluminateHttpResponse
     */
    public function update(Request $request, Buku $buku)
    {
        $request->validate([
            'judul' => 'required',
            'penulis' => 'required',
            'tahun_terbit' => 'required|integer',
        ]);

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

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

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

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

Penjelasan Kode Controller:

  • index(): Mengambil semua data buku dari database menggunakan Buku::all() dan mengirimkannya ke view bukus.index.
  • create(): Menampilkan view bukus.create yang berisi form untuk membuat buku baru.
  • store(Request $request): Menerima data dari form create melalui $request, melakukan validasi data menggunakan $request->validate(), membuat buku baru menggunakan Buku::create($request->all()), dan kemudian redirect ke halaman bukus.index dengan pesan sukses.
  • show(Buku $buku): Menampilkan detail buku berdasarkan ID. Laravel menggunakan route model binding untuk secara otomatis mengambil model Buku berdasarkan parameter $buku.
  • edit(Buku $buku): Menampilkan view bukus.edit yang berisi form untuk mengedit buku.
  • update(Request $request, Buku $buku): Menerima data dari form edit, melakukan validasi, dan memperbarui data buku yang sudah ada menggunakan $buku->update($request->all()).
  • destroy(Buku $buku): Menghapus buku berdasarkan ID menggunakan $buku->delete().

5. Membuat Views untuk Menampilkan dan Mengelola Data

Kita perlu membuat views untuk menampilkan data buku, menampilkan form create, dan form edit. Kita akan membuat folder bukus di dalam folder resources/views.

Buat file-file berikut:

  • resources/views/bukus/index.blade.php (Menampilkan daftar buku)
  • resources/views/bukus/create.blade.php (Form untuk membuat buku baru)
  • resources/views/bukus/show.blade.php (Menampilkan detail buku)
  • resources/views/bukus/edit.blade.php (Form untuk mengedit buku)

Berikut contoh kode untuk masing-masing view:

resources/views/bukus/index.blade.php

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

<div class="container">
    <div class="row">
        <div class="col-lg-12 margin-tb">
            <div class="pull-left">
                <h2>Daftar Buku</h2>
            </div>
            <div class="pull-right">
                <a class="btn btn-success" href="{{ route('bukus.create') }}"> Tambah 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>No</th>
            <th>Judul</th>
            <th>Penulis</th>
            <th>Tahun Terbit</th>
            <th width="280px">Action</th>
        </tr>
        @foreach ($bukus as $buku)
        <tr>
            <td>{{ ++$i }}</td>
            <td>{{ $buku->judul }}</td>
            <td>{{ $buku->penulis }}</td>
            <td>{{ $buku->tahun_terbit }}</td>
            <td>
                <form action="{{ route('bukus.destroy',$buku->id) }}" method="POST">
                    <a class="btn btn-info" href="{{ route('bukus.show',$buku->id) }}">Show</a>
                    <a class="btn btn-primary" href="{{ route('bukus.edit',$buku->id) }}">Edit</a>
                    @csrf
                    @method('DELETE')
                    <button type="submit" class="btn btn-danger">Delete</button>
                </form>
            </td>
        </tr>
        @endforeach
    </table>

    {{-- Pagination (Jika data banyak) --}}
    {{-- {!! $bukus->links() !!} --}}

</div>

</body>
</html>

resources/views/bukus/create.blade.php

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

<div class="container">
    <div class="row">
        <div class="col-lg-12 margin-tb">
            <div class="pull-left">
                <h2>Tambah Buku Baru</h2>
            </div>
            <div class="pull-right">
                <a class="btn btn-primary" href="{{ route('bukus.index') }}"> Kembali</a>
            </div>
        </div>
    </div>

    @if ($errors->any())
        <div class="alert alert-danger">
            <strong>Whoops!</strong> Ada beberapa kesalahan input.<br><br>
            <ul>
                @foreach ($errors->all() as $error)
                    <li>{{ $error }}</li>
                @endforeach
            </ul>
        </div>
    @endif

    <form action="{{ route('bukus.store') }}" method="POST">
        @csrf

         <div class="row">
            <div class="col-xs-12 col-sm-12 col-md-12">
                <div class="form-group">
                    <strong>Judul:</strong>
                    <input type="text" name="judul" class="form-control" placeholder="Judul">
                </div>
            </div>
            <div class="col-xs-12 col-sm-12 col-md-12">
                <div class="form-group">
                    <strong>Penulis:</strong>
                    <input type="text" name="penulis" class="form-control" placeholder="Penulis">
                </div>
            </div>
            <div class="col-xs-12 col-sm-12 col-md-12">
                <div class="form-group">
                    <strong>Deskripsi:</strong>
                    <textarea class="form-control" style="height:150px" name="deskripsi" placeholder="Deskripsi"></textarea>
                </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="tahun_terbit" class="form-control" placeholder="Tahun Terbit">
                </div>
            </div>
            <div class="col-xs-12 col-sm-12 col-md-12 text-center">
                    <button type="submit" class="btn btn-primary">Submit</button>
            </div>
        </div>

    </form>
</div>

</body>
</html>

resources/views/bukus/show.blade.php

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

<div class="container">
    <div class="row">
        <div class="col-lg-12 margin-tb">
            <div class="pull-left">
                <h2>Show Buku</h2>
            </div>
            <div class="pull-right">
                <a class="btn btn-primary" href="{{ route('bukus.index') }}"> Back</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>
                {{ $buku->judul }}
            </div>
        </div>
        <div class="col-xs-12 col-sm-12 col-md-12">
            <div class="form-group">
                <strong>Penulis:</strong>
                {{ $buku->penulis }}
            </div>
        </div>
        <div class="col-xs-12 col-sm-12 col-md-12">
            <div class="form-group">
                <strong>Deskripsi:</strong>
                {{ $buku->deskripsi }}
            </div>
        </div>
        <div class="col-xs-12 col-sm-12 col-md-12">
            <div class="form-group">
                <strong>Tahun Terbit:</strong>
                {{ $buku->tahun_terbit }}
            </div>
        </div>
    </div>
</div>

</body>
</html>

resources/views/bukus/edit.blade.php

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

<div class="container">
    <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('bukus.index') }}"> Back</a>
            </div>
        </div>
    </div>

    @if ($errors->any())
        <div class="alert alert-danger">
            <strong>Whoops!</strong> Ada beberapa kesalahan input.<br><br>
            <ul>
                @foreach ($errors->all() as $error)
                    <li>{{ $error }}</li>
                @endforeach
            </ul>
        </div>
    @endif

    <form action="{{ route('bukus.update',$buku->id) }}" method="POST">
        @csrf
        @method('PUT')

         <div class="row">
            <div class="col-xs-12 col-sm-12 col-md-12">
                <div class="form-group">
                    <strong>Judul:</strong>
                    <input type="text" name="judul" value="{{ $buku->judul }}" class="form-control" placeholder="Judul">
                </div>
            </div>
            <div class="col-xs-12 col-sm-12 col-md-12">
                <div class="form-group">
                    <strong>Penulis:</strong>
                    <input type="text" name="penulis" value="{{ $buku->penulis }}" class="form-control" placeholder="Penulis">
                </div>
            </div>
            <div class="col-xs-12 col-sm-12 col-md-12">
                <div class="form-group">
                    <strong>Deskripsi:</strong>
                    <textarea class="form-control" style="height:150px" name="deskripsi" placeholder="Deskripsi">{{ $buku->deskripsi }}</textarea>
                </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="tahun_terbit" value="{{ $buku->tahun_terbit }}" class="form-control" placeholder="Tahun Terbit">
                </div>
            </div>
            <div class="col-xs-12 col-sm-12 col-md-12 text-center">
              <button type="submit" class="btn btn-primary">Submit</button>
            </div>
        </div>

    </form>
</div>

</body>
</html>

Penting: Pastikan kamu sudah menginstall Bootstrap (atau framework CSS lainnya) untuk styling yang lebih baik. Contoh di atas menggunakan CDN Bootstrap.

6. Mendefinisikan Routes untuk Mengakses Controller

Kita perlu mendefinisikan routes di routes/web.php untuk menghubungkan URL dengan method-method di BukuController.

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

<?php

use IlluminateSupportFacadesRoute;
use AppHttpControllersBukuController;

/*
|--------------------------------------------------------------------------
| 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('bukus', BukuController::class);

Baris Route::resource('bukus', BukuController::class); secara otomatis membuat routes untuk semua method CRUD di BukuController berdasarkan konvensi naming. Ini sangat menghemat waktu!

Penjelasan:

  • Route::resource('bukus', BukuController::class) akan membuat routes berikut:

    • GET /bukus: BukuController@index (Menampilkan daftar buku)
    • GET /bukus/create: BukuController@create (Menampilkan form create)
    • POST /bukus: BukuController@store (Menyimpan buku baru)
    • GET /bukus/{buku}: BukuController@show (Menampilkan detail buku)
    • GET /bukus/{buku}/edit: BukuController@edit (Menampilkan form edit)
    • PUT/PATCH /bukus/{buku}: BukuController@update (Memperbarui buku)
    • DELETE /bukus/{buku}: BukuController@destroy (Menghapus buku)

7. Menjalankan Aplikasi dan Menguji CRUD

Setelah semua langkah di atas selesai, jalankan aplikasi Laravel kamu menggunakan perintah:

php artisan serve

Buka browser dan akses URL http://localhost:8000/bukus. Kamu seharusnya melihat daftar buku (yang saat ini masih kosong). Cobalah untuk menambahkan buku baru, mengedit, menampilkan detail, dan menghapus buku. Jika semua langkah diikuti dengan benar, kamu akan berhasil membuat CRUD dengan Laravel 9!

8. Validasi Data Lebih Lanjut untuk Keamanan dan Integritas Data

Validasi data adalah bagian penting dari pengembangan CRUD. Kita sudah menggunakan validasi dasar di method store dan update di BukuController. Kamu bisa menambahkan validasi yang lebih kompleks sesuai kebutuhan aplikasi. Beberapa contoh validasi tambahan:

  • Validasi Tipe Data: Memastikan tipe data yang dimasukkan sesuai dengan tipe data kolom di database (misalnya, memastikan tahun_terbit adalah angka).
  • Validasi Panjang Karakter: Membatasi panjang karakter untuk kolom judul dan penulis.
  • Validasi Unik: Memastikan tidak ada judul buku yang sama (jika judul harus unik).
  • Validasi Custom: Membuat validasi sendiri jika ada logika validasi yang kompleks.

Contoh validasi yang lebih lengkap:

public function store(Request $request)
{
    $request->validate([
        'judul' => 'required|string|max:255|unique:bukus',
        'penulis' => 'required|string|max:255',
        'deskripsi' => 'nullable|string',
        'tahun_terbit' => 'required|integer|min:1900|max:' . date('Y'),
    ]);

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

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

Penjelasan:

  • required|string|max:255|unique:bukus: judul wajib diisi, harus berupa string, maksimal 255 karakter, dan harus unik di tabel bukus.
  • nullable|string: deskripsi boleh kosong (nullable) dan harus berupa string.
  • required|integer|min:1900|max: . date(‘Y’): tahun_terbit wajib diisi, harus berupa integer, minimal tahun 1900, dan maksimal tahun saat ini.

9. Menggunakan Eloquent Relationships (Opsional)

Jika aplikasi kamu memiliki relasi antar tabel (misalnya, satu buku memiliki banyak komentar), kamu bisa menggunakan Eloquent Relationships untuk mempermudah pengelolaan data. Kamu perlu mendefinisikan relasi di model Buku dan model Komentar. Contoh:

Model Buku.php

<?php

namespace AppModels;

use IlluminateDatabaseEloquentFactoriesHasFactory;
use IlluminateDatabaseEloquentModel;

class Buku extends Model
{
    use HasFactory;

    protected $fillable = [
        'judul',
        'penulis',
        'deskripsi',
        'tahun_terbit',
    ];

    public function komentars()
    {
        return $this->hasMany(Komentar::class);
    }
}

Model Komentar.php

<?php

namespace AppModels;

use IlluminateDatabaseEloquentFactoriesHasFactory;
use IlluminateDatabaseEloquentModel;

class Komentar extends Model
{
    use HasFactory;

    protected $fillable = [
        'buku_id',
        'isi',
    ];

    public function buku()
    {
        return $this->belongsTo(Buku::class);
    }
}

Dengan relasi ini, kamu bisa mengakses komentar-komentar dari sebuah buku dengan mudah:

$buku = Buku::find(1);
$komentars = $buku->komentars; // Mengambil semua komentar untuk buku dengan ID 1

10. Keamanan dalam Implementasi CRUD: Mencegah Serangan dan Vulnerability

Keamanan adalah hal yang sangat penting dalam pengembangan web. Saat membuat CRUD, pastikan kamu mengambil langkah-langkah untuk mencegah serangan dan vulnerability:

  • Sanitasi Input: Bersihkan input dari user untuk mencegah serangan XSS (Cross-Site Scripting). Gunakan fungsi htmlspecialchars() atau helper e() di Blade untuk menampilkan data.
  • Proteksi CSRF: Laravel secara otomatis menyediakan proteksi CSRF (Cross-Site Request Forgery). Pastikan kamu menyertakan @csrf di semua form.
  • Autentikasi dan Otorisasi: Pastikan hanya user yang berhak yang bisa mengakses dan memodifikasi data. Gunakan middleware auth untuk melindungi routes.
  • Hindari SQL Injection: Gunakan Eloquent ORM untuk berinteraksi dengan database. Eloquent akan secara otomatis melakukan escaping untuk mencegah SQL Injection. Jangan pernah membuat query SQL secara manual dengan menggabungkan input dari user.
  • Rate Limiting: Batasi jumlah request dari satu IP address untuk mencegah serangan brute-force.

11. Tips dan Trik Optimasi CRUD di Laravel 9

Berikut beberapa tips dan trik untuk mengoptimasi performa CRUD di Laravel 9:

  • Eager Loading: Gunakan eager loading untuk mengurangi jumlah query database. Misalnya, jika kamu menampilkan daftar buku beserta penulisnya, gunakan Buku::with('penulis')->get() untuk mengambil data buku dan penulis dalam satu query.
  • Caching: Gunakan caching untuk menyimpan data yang sering diakses.
  • Pagination: Gunakan pagination untuk menampilkan data dalam jumlah besar secara efisien. Eloquent ORM menyediakan fitur pagination yang mudah digunakan.
  • Indexing Database: Tambahkan index pada kolom-kolom yang sering digunakan dalam query untuk mempercepat pencarian data.
  • Query Optimization: Analisa query database kamu dan optimalkan jika ada query yang lambat.

12. Kesimpulan: Sukses Membuat CRUD dengan Laravel 9

Selamat! Kamu telah mempelajari cara membuat CRUD dengan Laravel 9 secara lengkap. Dengan pemahaman yang baik tentang model, migration, controller, views, dan routes, kamu sekarang dapat membuat aplikasi web yang lebih kompleks dan dinamis. Ingatlah untuk selalu memperhatikan keamanan dan optimasi untuk menghasilkan aplikasi yang handal dan efisien. Selamat mencoba dan teruslah belajar!

Tags: BeginnerCRUDDatabaseEloquentExample CodeIndonesianLaravel 9PHPtutorialWeb Development
Finnian

Finnian

Related Posts

API

Membuat API Authentication dengan Laravel Sanctum: Panduan Lengkap

by Jasper
June 26, 2025
Development

Top 5 Package Laravel yang Mempermudah Pengembangan Website Anda

by Seraphina
June 26, 2025
Database

Cara Menggunakan Laravel Eloquent untuk Query Database: Panduan Lengkap

by Willow
June 25, 2025
Next Post

Package Laravel Terbaik untuk Pengembangan Web: Rekomendasi Library Populer

Leave a Reply Cancel reply

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

Recommended

Lowongan Kerja Web Development Fresh Graduate: Tips Mendapatkan Pekerjaan Impian

June 9, 2025

Tutorial Laravel Dasar untuk Pemula Bahasa Indonesia: Mulai Membangun Aplikasi Web

June 9, 2025

Desain Website Modern dan Menarik: Tingkatkan Konversi dengan Visual yang Memukau

April 9, 2025

Tools AI Gratis untuk Meningkatkan Produktivitas Konten Marketing Anda

June 27, 2025

Cara Membuat Artikel SEO-Friendly dengan Bantuan AI

June 26, 2025

Aplikasi AI Terbaik untuk Mengedit Foto Produk Online: Tingkatkan Penjualanmu Sekarang!

June 26, 2025

Membuat API Authentication dengan Laravel Sanctum: Panduan Lengkap

June 26, 2025

m.techreview.click

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

  • Tools AI Gratis untuk Meningkatkan Produktivitas Konten Marketing Anda
  • Cara Membuat Artikel SEO-Friendly dengan Bantuan AI
  • Aplikasi AI Terbaik untuk Mengedit Foto Produk Online: Tingkatkan Penjualanmu Sekarang!

Categories

  • 2024
  • Agency
  • AI
  • Akses
  • Aktif
  • Akuntansi
  • Algoritma
  • Analisis
  • Anggaran
  • Antarmuka
  • Antisipasi
  • API
  • Aplikasi
  • Artikel
  • Asynchronous
  • Audio
  • Authentication
  • Authorization
  • Backend
  • Background
  • Backup
  • Bahasa
  • Bandwidth
  • Bantuan
  • Belajar
  • Bergabung
  • Biaya
  • Bisnis
  • Blogger
  • Bootstrap
  • Branding
  • Bukti
  • Cepat
  • Chatbot
  • Cloud
  • Coding
  • Company
  • Contoh
  • cPanel
  • CRM
  • CSS
  • Custom
  • Dampak
  • Dasar
  • Data
  • Database
  • Deployment
  • Desain
  • Design
  • Detail
  • Developer
  • Development
  • Digital
  • Diskusi
  • Dokumentasi
  • Domain
  • Download
  • Dukungan
  • E-commerce
  • Efektif
  • Efisiensi
  • Eloquent
  • Email
  • Engine
  • Enterprise
  • Error
  • Error generating categories
  • Estimasi
  • Etika
  • Event
  • Faktor
  • Fitur
  • Fleksibel
  • Fortify
  • Foto
  • Framework
  • Freelancer
  • Fresh
  • Frontend
  • Fungsi
  • Gambar
  • Garansi
  • Gratis
  • Hacker
  • Harga
  • Hemat
  • Here are 5 categories derived from the article title "Hosting dengan Dukungan Pelanggan 24 Jam: Bantuan Kapanpun Dibutuhkan": Hosting
  • Here are 5 categories derived from the article title "Hosting Domain Murah Indonesia dengan Proteksi DDoS Gratis: Solusi Terbaik untuk Website Anda": Hosting
  • Here are 5 categories derived from the provided list and the article titles: Company
  • Hosting
  • HTML
  • Hybrid
  • Implementasi
  • Indonesia
  • Inovasi
  • Inspirasi
  • Instalasi
  • Integrasi
  • Investasi
  • Jakarta
  • Jasa
  • JavaScript
  • Kantor
  • Kapasitas
  • Karir
  • Karyawan
  • Keamanan
  • Keandalan
  • Kebutuhan
  • Kecepatan
  • Kecil
  • Kehidupan
  • Kemampuan
  • Kemudahan
  • Kerja
  • Kesalahan
  • Kesehatan
  • Keterampilan
  • Keuntungan
  • Keyword
  • Kode
  • Kompetensi
  • Komponen
  • Komunikasi
  • Komunitas
  • Konsep
  • Konten
  • Konversi
  • Kreativitas
  • Kredibilitas
  • Kualitas
  • Langkah
  • Laravel
  • Latihan
  • Layanan
  • Library
  • Listener
  • Livewire
  • Logika
  • Logo
  • Lokal
  • Loyalitas
  • Machine Learning
  • Mahasiswa
  • Mahir
  • Maintenance
  • Manfaat
  • Manufaktur
  • Marketing
  • Masa Depan
  • Masyarakat
  • Medis
  • Memilih
  • Meningkatkan
  • Middleware
  • Migration
  • Mobile
  • Modern
  • Murah
  • MySQL
  • Observer
  • Online
  • Operasional
  • Optimasi
  • ORM
  • Otentikasi
  • Otomatis
  • Package
  • Panduan
  • Pasar
  • Pekerjaan
  • Pelajaran
  • Pelanggan
  • Pelatihan
  • Peluang
  • Pemahaman
  • Pemanfaatan
  • Pemasaran
  • Pemilihan
  • Pemrograman
  • Pemula
  • Penawaran
  • Pengalaman
  • Pengenalan
  • Pengguna
  • Penggunaan
  • Pengujian
  • Penipuan
  • Penjualan
  • Penulisan
  • Peran
  • Perbandingan
  • Perbedaan
  • Performa
  • Performance
  • Peringkat
  • Pertimbangan
  • Pertumbuhan
  • Perusahaan
  • PHP
  • Pilihan
  • Platform
  • Policy
  • Portofolio
  • Praktik
  • Prediksi
  • Pribadi
  • Process
  • Produktivitas
  • Profesional
  • Profil
  • Profile
  • Project
  • Proyek
  • Python
  • Queue
  • Real-Time
  • Redis
  • Referensi
  • Rekomendasi
  • Relasi
  • Remote
  • Request
  • Responsive
  • Retail
  • Retensi
  • Review
  • Riset
  • Ritel
  • Roadmap
  • Saham
  • Sanctum
  • Sederhana
  • Seeding
  • SEO
  • Sertifikat
  • Server
  • Sharing
  • Sinkronisasi
  • Sistem
  • Skalabilitas
  • Skill
  • Software
  • Solusi
  • Space
  • SSL
  • Startup
  • Strategi
  • Struktur
  • Studi Kasus
  • Sukses
  • Tanggung Jawab
  • Tantangan
  • Teknis
  • Teknologi
  • Teks
  • Template
  • Tenaga Kerja
  • Terbaik
  • Terjangkau
  • Terjemahan
  • Terlengkap
  • Terpercaya
  • Tim
  • Tips
  • Toko
  • Tools
  • Training
  • Transkripsi
  • Tren
  • Tugas
  • Tutorial
  • Uji Coba
  • UMKM
  • Umum
  • Unlimited
  • Uptime
  • URL
  • User Experience
  • Video
  • Visual
  • VPS
  • Wajah
  • Web
  • Web Development
  • Website
  • Windows
  • WordPress

Resource

  • About us
  • Contact Us
  • Privacy Policy

© 2024 m.techreview.click.

No Result
View All Result
  • Website
  • Indonesia
  • Laravel
  • Hosting
  • AI
  • Development

© 2024 m.techreview.click.