Persiapan CRUD Eloquent ORM Laravel

Hai semuanya, saya harap mengharapkan Anda untuk mengikuti tutorial ini dengan sempurna tanpa putus asah untuk terus mencoba. Pada kesempatan kali ini saya akan membahas tutorial CRUD menggunakan Eloquent dari Laravel. Jadi, kalau yang sudah pernah coba menggunakan Query Builder tidak ada salahnya menggunakan Eloquent karena lebih mudah dan cepat dalam melakukan pengembangan.

Daftar isi:

Catatan: Tutorial ini menggunakan tabel users yang telah ada pada bawaan Laravel, jadi Anda tidak perlu repot membuat database migration. Sedang kerangka kerja CSS menggunakan Bulma menggunakan CDN untuk mengambil semua skrip CSS Bulma, maka Anda perlu koneksi internet.

1. Instalasi Laravel

Sebelum memulai silakan instal terlebih dahulu Laravel menggunakan perintah comporser dibawah ini:

composer create-project --prefer-dist laravel/laravel CrudLaravel

Atau Anda juga bisa menggunakan perintah seperti dibawah ini bila sudah menginstal Laravel installer:

laravel new CrudLaravel

2. Konfigurasi basis data

Silakan konfirgurasi dengan nama basis data yang telah Anda sesuaikan sendiri atau Anda juga bisa menggunakan DBMS selain mysql. Kemudian buka berkas .env pada direktori utama projek Laravel, seperti dibawah ini:

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

Setelah itu lakukan buka terminal Anda dan jalankan perintah dibawah ini:

php artisan migrate

3. Membuat controller

Buatlah controller dengan nama UserController sesuaikan dengan nama tabel users dan perluh diketahui penggunaan --resource agar Anda tidak perlu membuat beberapa fungsi dalam controller. Hal ini sangat mempermudah pengembang untuk CRUD cepat.

php artisan make:controller UserController --resource

Jangan lupa untuk menambahkan class User yang sudah ada pada direktori models dan letakan di berkas UserControlller.php. Saya harap Anda mengerti dimana seharusnya skrip ini diletakan.

use App\Models\User;

4. Membuat routing

Semenjak Laravel 8 hadir cara konfirgurasi routing berbeda, meskipun perbedaan itu bisa dihilangkan seperti versi Laravel sebelumnya. Karena tutorial ini menggunakan Laravel 8 maka Anda harus menggunakannya seperti dibawah ini. Salin dan tempelkan skrip dibawah ini pada berkas web.php di direktori routes:

use App\Http\Controllers\UserController;

Route::resource('users', UserController::class);

Jika itu berhasil dengan sempurna maka Anda bisa menampilkan semua rute yang Anda dengan menjalankan skrip dibawah ini di terminal.

php artisan route:list

Maka akan kelihatan seperti gambar dibawah ini.

semua rute

5. Buat direktori layouts dan users

Catatan: Anda bisa mengabaikan langkah 5 ini dan bisa menujuh langsung ke Jalan menuju kemalasan bila Anda tidak ingin membuat desain secara manual.

Silakan untuk membuat direktori dan berkas dan sesuaikan seperti dibawah ini, nanti akan dibahas di tutorial selanjutnya:

- resources/views
    - layouts
        - default.blade.php
    - users

Silakan untuk menambahkan skrip dibawah ini pada berkas default.blade.php:

<!DOCTYPE html>
<html lang="id">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <meta http-equiv="X-UA-Compatible" content="ie=edge">
    <title>{{ $title ?? config('app.name') }}</title>
    <link rel='stylesheet' href='https://cdnjs.cloudflare.com/ajax/libs/bulma/0.9.1/css/bulma.min.css'/>
</head>
<body>
    {{-- https://bulma.io/documentation/components/navbar/ --}}
    <nav class="navbar has-shadow" role="navigation" aria-label="main navigation">
        <div class="container">
            <div class="navbar-brand">
                <a class="navbar-item" href="{{ url('/') }}">
                    {{ config('app.name') }}
                </a>

                <a role="button" class="navbar-burger" aria-label="menu" aria-expanded="false" data-target="navbarBasicExample">
                    <span aria-hidden="true"></span>
                    <span aria-hidden="true"></span>
                    <span aria-hidden="true"></span>
                </a>
            </div>
            <div class="navbar-menu" id="navbarBasicExample">
                <div class="navbar-end">
                    <a href="{{ route('users.index') }}" class="navbar-item is-tab">Users</a>
                </div>
            </div>
        </div>
    </nav>

    {{-- https://bulma.io/documentation/layout/section/ --}}
    <section class="section">
        <div class="container">
            @yield('content')
        </div>
    </section>
    
    {{-- https://bulma.io/documentation/components/navbar/ --}}
    <script>
        document.addEventListener('DOMContentLoaded', () => {

            // Get all "navbar-burger" elements
            const $navbarBurgers = Array.prototype.slice.call(document.querySelectorAll('.navbar-burger'), 0);

            // Check if there are any navbar burgers
            if ($navbarBurgers.length > 0) {

                // Add a click event on each of them
                $navbarBurgers.forEach( el => {
                el.addEventListener('click', () => {

                    // Get the target from the "data-target" attribute
                    const target = el.dataset.target;
                    const $target = document.getElementById(target);

                    // Toggle the "is-active" class on both the "navbar-burger" and the "navbar-menu"
                    el.classList.toggle('is-active');
                    $target.classList.toggle('is-active');

                });
                });
            }

        });
    </script>

    @yield('script')
</body>
</html>

Penjelasan singkat:

  • @yield('content') digunakan untuk memasukan semua skrip yang nanti akan dilakukan pada semua berkas dalam direktpri users.
  • @yield('script') digunakan untuk meletakan skrip Javascript yang nanti akan ditambahkan pada tutorial edit.
  • route('users.index') digunakan untuk masuk ke halaman utama users dan akan dibahas di tutorial selanjutnya.

Jalan menuju kemalasan

Sebenarnya ini bukan jalan menuju kemalasan sebenarnya, tetapi hanya saja sebagian dari beberapa orang ingin membuat CRUD dengan cepat dan tanpa mengikuti dengan sempurna. Jadi saya sudah menyiapkan templat untuk CRUD dengan kerangka kerja CSS Bulma.

5. Unduh CRUD templat bulma

Silakan unduh templatnya pada repositori Github Sekolah Program Crud Templat Bulma Laravel

Berkas yang telah di unduh bisa di salin semuanya dan tempelkan pada direktori resources/views, seharusnya direktori akan terlihat seperti dibawah ini:

- resources/views
    - layouts
        - default.blade.php
    - users
        - create.blade.php
        - edit.blade.php
        - index.blade.php
        - show.blade.php

6. Konfirgurasi dasar routing di blade

Jangan lupa untuk memberikan tautan yang tidak berfungsi di beberapa berkas seperti dibawah ini:

default.blade.php

<a href="#" class="navbar-item is-tab">Users</a>
// menjadi
<a href="{{ route('users.index') }}" class="navbar-item is-tab">Users</a>

index.blade.php

<a href="#" class="button is-light">Tambah</a>
// menjadi
<a href="{{ route('users.create') }}" class="button is-light">Tambah</a>

create.blade.php, edit.blade.php, dan show.blade.php

<a href="#" class="button is-light">Kembali</a>
// menjadi
<a href="{{ route('users.index') }}" class="button is-light">Kembali</a>

Selamat mencoba bagi rekan-rekan yang sedang mengikuti tutorial ini dan jangan pernah lelah, tetap semangat!.