CRUD Laravel 11 – Insert Data ke Database

CRUD Laravel 11 – Insert Data ke Database
CRUD Laravel 11 – Insert Data ke Database

CRUD Laravel 11 – Insert Data ke Database – Salah satu operasi dasar dalam pengembangan aplikasi adalah menambahkan atau menyimpan data ke dalam database, yang dikenal sebagai operasi Create dalam prinsip CRUD (Create, Read, Update, Delete). Di Laravel 11, proses ini bisa dilakukan dengan mudah menggunakan Eloquent ORM yang memungkinkan kita mengelola database tanpa harus menulis kueri SQL secara manual.

Dalam artikel ini, kita akan membahas langkah-langkah untuk memasukkan data ke database di Laravel 11, mulai dari membuat form input, validasi data, hingga menyimpan data ke tabel database menggunakan model Laravel.

 

Insert Data ke Database

1. Membuat Button Tambah Data

Sebelum mebuat form untuk input tambah data, kita perlu memiliki button atau tombol yang berfungsi untuk mengarahkan ke form input data. Pada umumnya, button tambah data ada di view index atau tabel untuk menampilkan semua data. Untuk membuatnya, buka file index.blade.php di dalam folder resources/views/posts/:

<a href="/posts/create" class="btn btn-primary">Tambah Data</a>

Selain button tambah data, andda juga perlu menambahkan alert sukses untuk menandakan ke user bahwa data berhasil tersimpan ke database. Anda bisa membuatnya di file index.blade.php di dalam folder resources/views/posts/.

<!-- Menampilkan alert sukses -->
@if (session('success'))
    <div class="alert alert-success"> <strong>{{ session('success') }}</strong> </div>
@endif

2. Membuat Form untuk Input Data

Langkah selanjutnya dalam menyimpan data ke database adalah membuat form input yang memungkinkan pengguna memasukkan informasi yang ingin disimpan. Form ini akan mengirimkan data ke controller untuk diproses. Buat file create.blade.php di dalam folder resources/views/posts/:

<!DOCTYPE html>
<html lang="en">

<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Buat Post</title>
    <link href="https://cdn.jsdelivr.net/npm/bootstrap@5.3.3/dist/css/bootstrap.min.css" rel="stylesheet"
        integrity="sha384-QWTKZyjpPEjISv5WaRU9OFeRpok6YctnYmDr5pNlyT2bRjXh0JMhjY6hW+ALEwIH" crossorigin="anonymous">
</head>

<body>
    <div class="container">
        <h1>Buat Post Baru</h1>

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

        <!-- Form untuk mengirim data post -->
        <form action="/posts" method="POST">
            @csrf
            <div class="form-group">
                <label for="title">Judul:</label>
                <input type="text" id="title" class="form-control" name="title" value="{{ old('title') }}">
            </div>

            <div class="form-group">
                <label for="content">Konten:</label>
                <textarea id="content" class="form-control" name="content">{{ old('content') }}</textarea>
            </div>

            <button type="submit" class="btn btn-primary mt-3">Simpan</button>
        </form>


        <script src="https://cdn.jsdelivr.net/npm/bootstrap@5.3.3/dist/js/bootstrap.bundle.min.js"
            integrity="sha384-YvpcrYf0tY3lHB60NNkmXc5s9fDVZLESaAA55NDzOxhy9GkcIdslK1eN7N6jIeHz" crossorigin="anonymous">
        </script>
    </div>
</body>

</html>

Form di atas menggunakan metode POST untuk mengirim data ke route yang akan diproses oleh controller.

3. Membuat Method untuk Menyimpan Data

Sebelumnya, kita sudah membuat method untuk menampilkan data dari database yaitu pada method index di controller PostController.php. Sekarang kita akan menambahkan logika di dalam controller untuk memproses data yang dikirim dari form dan menyimpannya ke database, buka file PostController.php dan tambahkan dua metode berikut :

namespace App\Http\Controllers;

use App\Models\Post;
use Illuminate\Http\Request;

class PostController extends Controller
{
    // Menampilkan form untuk membuat post baru
    public function create()
    {
        return view('posts.create');
    }

    // Menyimpan data post ke database
    public function store(Request $request)
    {
        // Validasi data yang dikirimkan
        $request->validate([
            'title' => 'required|max:255',
            'content' => 'required',
        ]);

        // Menyimpan data ke database menggunakan model Post
        Post::create([
            'title' => $request->input('title'),
            'content' => $request->input('content'),
        ]);

        // Redirect ke halaman yang diinginkan setelah menyimpan data
        return redirect('/posts)->with('success', 'Post berhasil disimpan!');
    }
}

Pada metode store, kita melakukan beberapa hal:

  • Validasi Data : Menggunakan metode validate() untuk memeriksa apakah input dari form sesuai dengan aturan yang ditetapkan.
  • Menyimpan Data : Menggunakan model Post untuk menyimpan data ke database dengan metode create().
  • Redirect : Setelah data berhasil disimpan, pengguna akan diarahkan kembali ke halaman form dengan pesan sukses.

4. Mengaktifkan Mass Assignment pada Model

Agar kita bisa menggunakan metode create() untuk menyimpan data secara massal, kita perlu mendefinisikan atribut yang dapat di-assign secara massal di model Post. Buka file Post.php di folder app/Models/ dan tambahkan properti $fillable:

<?php

namespace App\Models;

use Illuminate\Database\Eloquent\Factories\HasFactory;
use Illuminate\Database\Eloquent\Model;

class Post extends Model
{
    use HasFactory;

    // Atribut yang dapat diisi secara massal
    protected $fillable = ['title', 'content'];
}

Dengan menambahkan properti ini, kita mengizinkan atribut title dan content untuk diisi langsung menggunakan metode create().

5. Uji Coba Fitur Insert Data ke Database

Mari kita uji coba proses insert data ke database apakah berhasil dan validasinya berjalan atau tidak.

Test validasi insert data - Inovasicode.com
Test validasi insert data
Test insert data ke database sukses - Inovasicode.com
Test insert data ke database sukses

 

Kesimpulan

Proses insert data ke database di Laravel 11 sangat mudah dan efisien berkat penggunaan Eloquent ORM dan fitur validasi yang terintegrasi. Dengan mengikuti langkah-langkah di atas, Anda dapat membuat form input, melakukan validasi, dan menyimpan data ke database dengan aman. Artikel ini memberikan dasar untuk menangani operasi Create dalam prinsip CRUD. Untuk operasi selanjutnya seperti edit dan delete, pastikan Anda mengikuti artikel berikutnya.

 

Part Selanjutnya