-->

Cara Membuat CRUD Dengan Laravel 9

crud laravel
Membuat crud sederhana - laravel

Cara Membuat CRUD sederhana menggunakan laravel V9 - Pada artikel ini saya menuliskan step-step cara membuat CRUD dengan laravel, selain teman-teman membaca artikel ini, kalian juga bisa langsung melihat video tutorialnya yang ada di channel youtube saya.

Berikut Merupakan Step-step Membuat CRUD Menggunakan Laravel 9

Installasi Laravel

Sebelum masuk ke inti dari artikel ini, pastinya kalian sudah menginstall laravel di local kalian, jika belum menginstalnya kalian bisa simak pada bagian ini.
Pertama jika kalian belum menginstall composer, kalian harus menginstallnya terlebih dahulu, karna untuk menginstall laravel-nya menggunakan composer. Lalu bagaimana untuk menginstall laravel?
Caranya pun cukup mudah, kalian cukup buka cmd, dan arahkan kedirektori untuk penyimpanan program laravelnya, * xampp/htdocs/ * lalu ketikan perintah * composer create-project laravel/laravel nama_program * atau seperti contoh pada gambar di bawah, dan tunggu sampai installasi selesai.
installasi laravel

Jika installasi selesai, kita masuk ke direktori folder yang baru dibuat tadi, karna pada artikel ini saya membuat dengan nama 'crud-laravel' berarti pada cmd saya tuliskan perintah * cd crud-laravel * nah ketika sudah didalam folder curd-laravel, untuk menjalankan programnya tinggal ketikan * php artisan serve *
menjalankan laravel

Lalu copy urlnya dan paste pada browser kalian, dan program laravel pertama kalian seperti ini, gambar di bawah.


Membuat Controller & Model

Setelah berhasil menginstall dan menjalankan program laravel kita, selanjutnya kita akan membuat controller dan model terlebih dahulu, apa sih controller dan model pada laravel? huh mungkin teman-teman bisa mencari pengertian tersebut dari sumber yang lain ya hehhe.

Oke jadi bagaimana cara membuat controller dan model? Caranya cukup mudah teman-teman, pertama buka texteditor kalian kemudian buka terminal pada texteditor (berada pada folder program laravel) kemudian ketikan perintah * php artisan make:controller SiswaController --resource * -> untuk controller, * php artisan make:model Siswa * untuk model. 
membuat controller dan model

Untuk penamaan controller dan modelnya bisa teman-teman sesuaikan dengan keinginan teman-teman ya
Jika sudah, file yang baru dibuat tersebut terdapat pada folder " app/Http/controllers " untuk controller dan " app/Models " untuk model.
Selanjutnya buka file controller yang baru dibuat dan include file model " SISWA " atau model yang baru di buat di dalam file siswaController, dengan menggunakan * use App\Models\namamodel *
code pada siswacontroller jadi seperti ini 
namespace App\Http\Controllers;

use Illuminate\Http\Request;
use App\Models\Siswa;
Pada file model, bagian class siswa tambahkan code seperti berikut

class Siswa extends Model
{
    use HasFactory;
    protected $guarded = ['id'];
}
  
Selanjutnya...

Membuat Database Migration

Selanjutnya, kita akan membuat database dengan migration, apa sih migration pada laravel  itu? mungkin teman-teman bisa cari di web laravelnya ya :D. 
Jadi cara membuat migration cukup mudah, karna pada artikel ini saya mengacu pada data siswa saya ingin membuat database dengan nama crud_laravel

Oke, pertama-tama kalian buat databasenya, buat seperti biasa di phpmyadmin, atau sejenisnya, kebetulan saya menggunakan SQLyog. Jika sudah membuat databasenya, balik ke texteditor pada program kalian dan cari file yang bernama * .env *, didalamnya terdapat text ' DB_xxx ' nah dibagian database kalian ubah yang sebelumnya laravel menjadi nama database kalian.
DB_CONNECTION=mysql
DB_HOST=127.0.0.1
DB_PORT=3306
DB_DATABASE=crud_laravel
DB_USERNAME=root
DB_PASSWORD=
Kemudian buka terminal dan ketikan * php artisan make:migration create_'nama_table'_table *

database migrasi

oh ya setelah kita membuat migration, ada beberapa field default yang dibuatkan oleh laravel.

Lalu kita buka file migration yang baru kita buat, terdapat di folder databases > migrations > 
Kemudian pada function up terdapat schema create didalamnya terdapat field default id dan timestamps, nah tinggal kita tambahin sesuai dengan kebutuhan, dengan format, * $table->tipe data('nama_field') *

schema tabel database


Jika sudah, simpan untuk menyimpan perubahan, lalu buka terminal lagi, ketik pada terminal * php artisan migrate * untuk migrasi 

perintah migrate


dan lihat kembali ke databasenya, boom secara otomatis field-field yang dibuat pada schema tadi secara otomatis dibuatkan oleh laravel. 
Setelah membuat controller, model serta migration database selanjutnya kita membuat views.

Membuat Views

Pada bagian sebelumnya kita telah berhasil menginstall, menjalankan program laravel dan membuat controller, model dan database migrasi, dibagian ini kita akan membuat views. Untuk membuat views cukup mudah, kita tidak perlu menggunakan perintah artisan seperti membuat  model dan controller sebelumnya.
Oke pertama kita buka folder " resource > views " coba perhatikan, didalam folder views terdapat file welcome.blade.php, nah file tersebutlah yang pertama kali tampil pada program laravel yang baru kita jalankan tadi, abaikan saja file tersebut, karna kita akan membuat views baru.

Caranya cukup mudah, teman-teman tinggal membuat file baru dengan nama " index.blade.php " mungkin penamaan file bisa disesuaikan, selanjutnya buka file tersebut dan isi dengan code html terbaik teman-teman :D haha, karna pada artikel ini saya akan membuat crud sederhana, maka contoh dari halaman ini sederhana saja, hanya terdapat tabel data dan beberapa button, kurang lebih codenya seperti dibawah ini
<!doctype html>
<html lang="en">
<head>
    <meta charset="utf-8">
    <meta name="viewport" content="width=device-width, initial-scale=1">
    <title>Crud Laravel</title>
<link href="https://cdn.jsdelivr.net/npm/bootstrap@5.2.1/dist/css/bootstrap.min.css" rel="stylesheet" integrity="sha384-iYQeCzEYFbKjA/T2uDLTpkwGzCiq6soy8tYaI1GyVh/UjpbCx/TYkiZhlZB6+fzT" crossorigin="anonymous"> </head> <body> <div class="container"> <h1 class="text-center">Crud Sederhana Laravel</h1> <a href="#" class="btn btn-primary btn-sm mb-2 mt-4">Tambah Data</a> <table class="table table-bordered"> <thead> <tr> <th>No</th> <th>Nama</th> <th>Kelas</th> <th>NIS</th>                         <th>JK</th> <th>aksi</th> </tr> </thead> <tbody> <tr> <td>1</td> <td>xxx</td> <td>xxx</td> <td>xxx</td>                         <td>xxx</td> <td>                             <a href="#" class="btn btn-primary btn-sm">Detail</a> <a href="#" class="btn btn-info text-white btn-sm">Edit</a> <form action="#" method="post" class="d-inline"> @method('') @csrf <button class="btn btn-danger btn-sm">delete</button> </form> </td> </tr> </tbody> </table> </div> <script src="https://cdn.jsdelivr.net/npm/bootstrap@5.2.1/dist/js/bootstrap.bundle.min.js" integrity="sha384-u1OknCvxWvY5kfmNBILK2hRnQC3Pr17a+RTT6rIHI7NnikvbZlHgTPOOmMi466C8" crossorigin="anonymous"></script> </body> </html>
Setelah selesai membuat tampilan dihalaman index, halaman tersebut belum bisa kita akses, kita harus merubah routenya dulu, caranya kalian buka folder * routes > web.php *, didalam file web.php kita panggil terlebih dahulu controller yang baru kita buat tadi, * use App\Http\Controllers\'namaController' * , terus scroll kebawah dan isikan route kalian.
<?php

use Illuminate\Support\Facades\Route;
use App\Http\Controllers\SiswaController;

Route::resource('/crud', SiswaController::class);
Lalu pindah ke file controller kalian, kemudian didalam file controller kita panggil model yang baru dibuat tadi. * App\Models\'nama-model' *, jika sudah, pada bagian fungsi index, kita jalankan yang mengarahkan ke view yang dibuat tadi (tanpa .blade.php). contoh pada code di bawah.

public function index()
{
    return view('index');
}
Jika sudah seperti itu maka jika kita refresh pada browser hasilnya akan seperti gambar dibawah.
Nah pasti program kita tidak tampil di browser dan menampilkan pesan 404, coba perhatikan route yang baru kita buat di atas, * Route::resouce('/crud') * pada kolom url di browser tambahkan /crud

 

Templateing 

Pada pembuatan views sebelumnya, kita telah membuat index.blade.php, sekarang ini kita akan membuat templateing halaman yang akan kita akses ketika ingin melakukan proses create, update lebih terpatnya. Pertama kita ubah dulu pada file index.blade.php, di dalam file tersebut kita akan membagi bagian yang akan menjadikan konten....
Pertama saya ingin membuat folder baru bernama siswa, dan didalam folder tersebut saya membuat file baru dengan nama template.blade.php, didalam file template, saya copas semua dari file index.blade.php, lalu pada bagian tag <div class='container'>...</div> saya cut dan diubah menjadi seperti code di bawah
<!doctype html>
<html lang="en">
<head>
    <meta charset="utf-8">
    <meta name="viewport" content="width=device-width, initial-scale=1">
    <title>Crud Laravel</title>
    <link href="https://cdn.jsdelivr.net/npm/bootstrap@5.2.1/dist/css/bootstrap.min.css" rel="stylesheet" integrity="sha384-iYQeCzEYFbKjA/T2uDLTpkwGzCiq6soy8tYaI1GyVh/UjpbCx/TYkiZhlZB6+fzT" crossorigin="anonymous">
</head>
    <body>
        <div class="container">
            @yield('content')
        </div>

        <script src="https://cdn.jsdelivr.net/npm/bootstrap@5.2.1/dist/js/bootstrap.bundle.min.js" integrity="sha384-u1OknCvxWvY5kfmNBILK2hRnQC3Pr17a+RTT6rIHI7NnikvbZlHgTPOOmMi466C8" crossorigin="anonymous"></script>
    </body>
</html>
Selanjutnya di dalam file index.blade.php menjadi seperti code dibawah

@extends('siswa.template')

@section('content')    
    <h1 class="text-center">Crud Sederhana Laravel</h1>
    <a href="/crud/create" class="btn btn-primary btn-sm mb-2 mt-4">Tambah Data</a>

    <table class="table table-bordered">
        <thead>
            <tr>
                <th>No</th>
                <th>xx</th>
                <th>xx</th>
                <th>xx</th>
                <th>aksi</th>
            </tr>
        </thead>
        <tbody>
            <tr>
                <td>1</td>
                <td>xxx</td>
                <td>xxx</td>
                <td>xxx</td>
                <td>
                    <a href="#" class="btn btn-primary btn-sm">Detail</a>
                    <a href="#" class="btn btn-info text-white btn-sm">Edit</a>
                    <form action="#" method="post" class="d-inline">
                        @method('')
                        @csrf
                        <button class="btn btn-danger btn-sm">delete</button>
                    </form>
                </td>
            </tr>
        </tbody>
    </table>
@endsection
@extends('siswa.template') , mengarahkan ke file template yang kalian buat, sedangkan @section('content') isi dengan name pada yield yang barusan di buat

Membuat Halaman Create

Setelah membuat templateing, selanjutnya kita membuat halaman untuk tambah data, didalam folder siswa kita buat file baru dengan nama create.blade.php, di dalam file create saya isi dengan code berikut, 

@extends('siswa.template')

@section('content')
    <h1>Create Data</h1>
    <a href="/crud" class="btn btn-primary btn-sm">Kembali</a>
    <form action="/crud" method="post">
        @csrf
        <div class="mb-3">
            <div class="row">
                <div class="col">
                    <label for="">Nama</label>
                    <input type="text" class="form-control" name="nama">
                </div>
                <div class="col">
                    <label for="">Kelas</label>
                    <input type="text" class="form-control" name="kelas">
                </div>
                <div class="col">
                    <label for="">Nis</label>
                    <input type="text" class="form-control" name="nis">
                </div>
            </div>
        </div>
        <div class="mb-3">
            <label for="">Jenis Kelamin</label>
            <select name="jk" id="" class="form-control">
                <option value="L">Laki-Laki</option>
                <option value="P">Perempuan</option>
            </select>
        </div>
        <div class="mb-3">
            <div class="row">
                <div class="col">
                    <label for="">Tanggal Lahir</label>
                    <input type="date" class="form-control" name="tanggal_lahir">
                </div>
                <div class="col">
                    <label for="">Tempat Lahir</label>
                    <input type="text" class="form-control" name="tempat_lahir">
                </div>
            </div>
        </div>
        <div class="mb-3">
            <label for="">Alamat</label>
            <textarea name="alamat" class="form-control" cols="30" rows="4"></textarea>
        </div>
        <div class="mb-3">
            <label for="">Hobi</label>
            <input type="text" class="form-control" name="hobi">
        </div>
        <button type="submit" class="btn btn-primary btn-sm">Simpan</button>
    </form>
@endsection
Setelah membuat view create, selanjutnya kita akan memperbaiki bagian di dalam file controller kita, pertama kita buka file controllernya, lalu pada function create, arahkan ke file create.blade.php yang dibuat tadi
public function create()
  {
     return view('siswa.create');
  }
Kemudian pada function store kita akan membuat query untuk melakukan operasi create, mungkin teman-teman bisa ikuti code yang saya buat dibawah 
	public function store(Request $request)
    {
        $rules = $request->validate([
            'nama' => 'required|min:5',
            'kelas' => 'required',
            'nis' => 'required',
            'jk' => 'required',
            'tanggal_lahir' => 'required',
            'tempat_lahir' => 'required',
            'alamat' => 'required',
            'hobi' => 'nullable',
        ]);

        Siswa::create($rules);
        return redirect('/crud');
    }
Setelah kita berhasil membuat fungsi create dan berhasil di jalankan, selanjutnya kita akan menampilkan data dari data yang kita input pada form tersebut, gimana tuh caranya? cukup mudah ya cuy, pertama kalian kembali ke file controller, pada bagian function index tambahkan code seperti dibawah ini

	public function index()
    {
        return view('index', [
            'siswas' => Siswa::all(),
        ]);
    }

Kemudian buka file index kalian untuk memanggil datanya, caranya seperti code di bawah

        ....
        @foreach ($siswas as $key => $siswa)
            <tbody>
                <tr>
                    <td>{{$key+1}}</td>
                    <td>{{$siswa->nama}}</td>
                    <td>{{$siswa->kelas}}</td>
                    <td>{{$siswa->nis}}</td>
                    <td>{{$siswa->jk}}</td>
                    <td>
                        <a href="/crud/{{$siswa->id}}" class="btn btn-primary btn-sm">Detail</a>
                        <a href="/crud/{{$siswa->id}}/edit" class="btn btn-info btn-sm text-white">Edit</a>
                        <form action="/crud/{{$siswa->id}}" method="post" class="d-inline">
                            @method('delete')
                            @csrf
                            <a h class="btn btn-danger btn-sm">Delete</a>
                        </form>
                    </td>
                </tr>
            </tbody>
        @endforeach

Membuat Halaman Edit

Selanjutnya kita akan membuat function untuk edit ini, caranya sama seperti membuat fungsi tambah data diatas, kita masuk ke file SiswaController, lalu pada function edit kita arahkan ke halaman views, kurang lebih codenya seperti dibawah ini
	public function edit($id)
    {
        return view('siswa.edit',[
            'siswa' => Siswa::find($id)
        ]);
    }
Setelah memperbaiki pada file controllernya, kemudian kita membuat/memperbaiki halaman untuk edit data, sama seperti cara sebelumnya, masuk ke folder siswa dan buat file baru dengan nama edit.blade.php, untuk penamaan bisa kalian sesuaikan ya.
Di dalam file edit.blade.php saya isi dengan code html seperti dibawah ini.

@extends('siswa.template')

@section('content')
    <h1>Edit Data</h1>
    <a href="/crud" class="btn btn-primary btn-sm">Kembali</a>
    <form action="/crud/{{$siswa->id}}" method="post">
        @method('PUT')
        @csrf
        <div class="mb-3">
            <div class="row">
                <div class="col">
                    <label for="">Nama</label>
                    <input type="text" class="form-control" name="nama" value="{{$siswa->nama}}">
                </div>
                <div class="col">
                    <label for="">Kelas</label>
                    <input type="text" class="form-control" name="kelas" value="{{$siswa->kelas}}">
                </div>
                <div class="col">
                    <label for="">Nis</label>
                    <input type="text" class="form-control" name="nis" value="{{$siswa->nis}}">
                </div>
            </div>
        </div>
        <div class="mb-3">
            <label for="">Jenis Kelamin</label>
            <select name="jk" id="" class="form-control">
                <option value="L" @if ($siswa->jk == 'L') selected @endif>Laki-Laki</option>
                <option value="P" @if ($siswa->jk == 'P') selected @endif>Perempuan</option>
            </select>
        </div>
        <div class="mb-3">
            <div class="row">
                <div class="col">
                    <label for="">Tanggal Lahir</label>
                    <input type="date" class="form-control" name="tanggal_lahir" value="{{$siswa->tanggal_lahir}}">
                </div>
                <div class="col">
                    <label for="">Tempat Lahir</label>
                    <input type="text" class="form-control" name="tempat_lahir" value="{{$siswa->tempat_lahir}}">
                </div>
            </div>
        </div>
        <div class="mb-3">
            <label for="">Alamat</label>
            <textarea name="alamat" class="form-control" cols="30" rows="4">{{$siswa->alamat}}</textarea>
        </div>
        <div class="mb-3">
            <label for="">Hobi</label>
            <input type="text" class="form-control" name="hobi" value="{{$siswa->hobi}}">
        </div>
        <button type="submit" class="btn btn-primary btn-sm">Simpan</button>
    </form>
@endsection

Kemudian pada file controller dibagian function update isi dengan code berikut,
public function update(Request $request, $id)
    {
        $rules = $request->validate([
            'nama' => 'required|min:5',
            'kelas' => 'required',
            'nis' => 'required:unique:nama',
            'jk' => 'required',
            'tanggal_lahir' => 'required',
            'tempat_lahir' => 'required',
            'alamat' => 'required',
            'hobi' => 'nullable',
        ]);

        Siswa::where('id', $id)
            ->update($rules);

        return redirect('/crud');
    }

Nah setelah berhasil membuat halaman dan fungsi update selanjutnya kita akan membuat halaman detail

Membuat Halaman Detail

Caranya sama seperti membuat halaman diatas, kita arahkan ke folder siswa lalu buat file baru dengan nama detail.blade.php atau sesaui keinginan kalian, kurang lebih codenya seperti pada contoh dibawah
@extends('siswa.template')

@section('content')
    <h1>Detail Siswa</h1>
    <a href="/crud" class="btn btn-primary btn-sm mb-2">Kembali</a>
    <div class="card">
        <div class="card-body">
            <table class="table">
                <tr>
                    <th>Nama</th>
                    <td>{{$siswa->nama}}</td>
                </tr>
                <tr>
                    <th>Kelas</th>
                    <td>{{$siswa->kelas}}</td>
                </tr>
                <tr>
                    <th>Nis</th>
                    <td>{{$siswa->nis}}</td>
                </tr>
                <tr>
                    <th>Jenis Kelamin</th>
                    <td>
                        @if ($siswa->jk == 'L')
                            {{'Laki-Laki'}}
                        @elseif($siswa->jk == 'P')
                            {{'Perempuan'}}
                        @endif
                    </td>
                </tr>
                <tr>
                    <th>Tempat / Tanggal Lahir</th>
                    <td>{{$siswa->tempat_lahir}} / {{ CarbonCarbon::parse($siswa->tanggal_lahir)->format('d-m-Y')}}</td>
                </tr>
                <tr>
                    <th>Alamat</th>
                    <td>{{$siswa->alamat}}</td>
                </tr>
                <tr>
                    <th>Hobi</th>
                    <td>{{$siswa->hobi}}</td>
                </tr>
            </table>
        </div>
    </div>
@endsection
Kemudian kita perbaiki controller pada file SiswaController, pada fungsi show, saya isikan dengan code berikut

public function show($id)
    {
        return view('siswa.detail', [
            'siswa' => Siswa::find($id),
        ]);
    }

Membuat Fungsi Delete

Setelah kita berhasil membuat fugsi tambah, update dan menampilkan data, selanjutnya kita akan membuat fungsi delete, untuk fungsi delete ini cukup sederhana, yang pertama perhatikan pada halaman index kita dan  pada bagian button delete pastikan telah susai dengan code yang saya buat sebelumnya,
<form action="/crud/{{$siswa->id}}" method="post" class="d-inline">
 @method('delete')
 @csrf
 <button class="btn btn-danger btn-sm">Delete</button>
</form>
Selanjutnya kembali ke file controller kemudian pada bagian fungsi destroy, ketikan seperti code yang saya buat di bawah ini

public function destroy($id)
    {
        Siswa::destroy($id);
        return redirect('/crud');
    }


Oke cuy jadi artikel mengenai membuat CRUD sederhana dengan laravel 9 ini selesai sampai disini, jika kalian masih bingung dengan artikel ini, kalian bisa tinggalkan komentar.