Assalamualaikum, wr. wb. Pada tutorial ini kita akan belajar cara membuat CRUD Laravel 8. Kita akan belajar cara sederhana membuat CRUD Laravel 8 dengan penjelasan yang cukup singkat. Karena sebenarnya pun tidak ada banyak perbedaan dengan versi sebelumnya. Kita menggunakan fitur Eloquent ORM pada tutorial ini. Jika kalian sangat pemula di Laravel dan langsung nyasar kesini, maka saya sarankan untuk mengikuti tutorial yang lebih detail penjelasannya disini (Tutorial CRUD Laravel Dengan Eloquent ORM).
index.blade.php
create.blade.php
detail.blade.php
edit.blade.php
Akses dengan url localhost:8000/users maka kurang lebih hasilnya seperti berikut:
Selain penjelasan dalam artikel, kita juga menambahkan penjelasan menggunakan komen pada kodenya langsung agar lebih mudah dipahami. Kita akan belajar tentang penggunaan controller, model, route, dan blade view.
Ingat, beberapa hal yang harus disiapkan diantaranya PHP versi 7.3 atau yang di atasnya, XAMPP atau sejenisnya, dan kode editor (kita biasa menggunakan Visual Studio Code).
Berikut adalah tahap-tahap dalam tutorial kali ini:
- Install Laravel 8
- Konfigurasi Database
- Migrasi
- Membuat Resource Controller dan Route
- Membuat View
- Hasil Akhir
Jika peralatan kalian sudah siap, mari kita mulai belajarnya. Aplikasi yang akan kita buat kali ini adalah Fitur Manajemen Pengguna. Jadi kita dapat menambahkan pengguna baru, menampilkan, mengedit, dan menghapusnya.
Langkah 1: Install Laravel 8
Untuk melakukan install masih sama dengan versi sebelumnya, sebenarnya ada dua cara jika kalian lihat di dokumentasinya Laravel 8. Kalau saya lebih suka menggunakan Composer Create-Project seperti berikut. Ketikkan pada command-line kalian.
composer create-project --prefer-dist laravel/laravel namaprojek
Langkah 2: Konfigurasi Database
Sebelumnya buat dulu database yang akan kalian pakai sesuai dengan database kalian (Saya asumsikan kalian sudah bisa membuat database-nya). Disini saya menggunakan MySQL pada phpMyAdmin. Setelah selesai membuat database, buka dile .env kalian, lalu setting sesuai nama, username dan password database-yang kalian buat.
DB_CONNECTION=mysql DB_HOST=127.0.0.1 DB_PORT=3306 DB_DATABASE=laravel8 DB_USERNAME=root DB_PASSWORD=
Langkah 3: Migrasi
Karena kita akan membuat fitur manajemen pengguna, maka kita langsung jalankan perintah migrasi saja, karena laravel sudah menyediakan file migrasi untuk tabel user/pengguna. Jika kalian ingin mengetahui cara membuat file migrasi baru, silahkan lihat di tutorial berikut bagian membuat migrasi.
Sekarang ketikkan perintah berikut:
php artisan make:migrate
Langkah 4: Membuat Resource Controller dan Route
Buat yang baru tahu route silahkan cek tutorial yang pernah saya buat Disini. Nah dengan resource route ini, kita sudah dapat route untuk membuat fungsi CRUD. Jadi tidak perlu repot-repot membuat masing-masing route untuk CRUD seperti post, get, delete, dan update.
Tapi sebelumnya kita buat controller untuk user dahulu, kita sudah punya model user, jadi cukup buat controllernya saja. Ketikkan perintah ini di controller.
php artisan make:controller UserController --resource
Oke sekarang tambahkan kode berikut pada routes/web.php
<?phpuse App\Http\Controllers\UserController;Route::resource('users', UserController::class);
Pada file Controller yang kita dapat secara otomatis akan terdapat 7 fungsi berikut yang dapat kita gunakan untuk membuat operasi CRUD.
- index()
- create()
- store()
- show()
- edit()
- update()
- destroy()
Sekarang kita buka app/Http/Controllers/UserController.php kemudian ketikkan kodenya seperti berikut ini.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 | <?php namespace App\Http\Controllers; use App\Models\User; use Illuminate\Http\Request; class UserController extends Controller { public function index() { //fungsi eloquent menampilkan data menggunakan pagination $users = User::latest()->paginate(5); return view('users.index', compact('users')) ->with('i', (request()->input('page', 1) - 1) * 5); } public function create() { return view('users.create'); } public function store(Request $request) { //melakukan validasi data $request->validate([ 'name' => 'required', 'email' => 'required', 'password' => 'required', ]); //fungsi eloquent untuk menambah data User::create($request->all()); //jika data berhasil ditambahkan, akan kembali ke halaman utama return redirect()->route('users.index') ->with('success', 'User Berhasil Ditambahkan'); } public function show($id) { //menampilkan detail data dengan menemukan/berdasarkan id user $user = User::find($id); return view('users.detail', compact('user')); } public function edit($id) { //menampilkan detail data dengan menemukan/berdasarkan id user untuk diedit $user = User::find($id); return view('users.edit', compact('user')); } public function update(Request $request, $id) { //melakukan validasi data $request->validate([ 'name' => 'required', 'email' => 'required', 'password' => 'required', ]); //fungsi eloquent untuk mengupdate data inputan kita User::find($id)->update($request->all()); //jika data berhasil diupdate, akan kembali ke halaman utama return redirect()->route('users.index') ->with('success', 'User Berhasil Diupdate'); } public function destroy($id) { //fungsi eloquent untuk menghapus data User::find($id)->delete(); return redirect()->route('users.index') ->with('success', 'User Berhasil Dihapus'); } } |
Untuk penjelasan tiap kode silahkan baca di komen pada kode di atas ya. Jadi initinya setiap aksi yang berhasil kita lakukan, akan memberikan pesan success yang nantinya akan ditangkap oleh fungsi session pada view.
Jangan lupa untuk setting nilai $fillable di Model User berdasarkan data yang ingin dapat kita tambah atau edit, pada kasus ini name, email, dan password. Tapi kalau kita pake Model User biasanya sudah otomatis tersetting sih.
Langkah 5: Membuat View
Saya asumsikan kalian sudah mengerti cara templating pada laravel menggunakan blade. Pertama buat folder users pada resources/views. Terakhir buat file-file berikut ini.
- layout.blade.php
- index.blade.php
- create.blade.php
- edit.blade.php
- detail.blade.php
Kemudian ketikkan kode berikut pada masing-masing file.
layout.blade.php
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 | <!DOCTYPE html> <html> <head> <title>Sistem Informasi Manajemen Perpustakaan</title> <link rel="stylesheet" href="https://stackpath.bootstrapcdn.com/bootstrap/4.4.1/css/bootstrap.min.css" integrity="sha384-Vkoo8x4CGsO3+Hhxv8T/Q5PaXtkKtu6ug5TOeNV6gBiFeWPGFN9MuhOf23Q9Ifjh" crossorigin="anonymous"> <script src="https://code.jquery.com/jquery-3.4.1.slim.min.js" integrity="sha384-J6qa4849blE2+poT4WnyKhv5vZF5SrPo0iEjwBvKU7imGFAV0wwj1yYfoRSJoZ+n" crossorigin="anonymous"></script> <script src="https://cdn.jsdelivr.net/npm/popper.js@1.16.0/dist/umd/popper.min.js" integrity="sha384-Q6E9RHvbIyZFJoft+2mJbHaEWldlvI9IOYy5n3zV9zzTtmI3UksdQRVvoxMfooAo" crossorigin="anonymous"></script> <script src="https://stackpath.bootstrapcdn.com/bootstrap/4.4.1/js/bootstrap.min.js" integrity="sha384-wfSDF2E50Y2D1uUdj0O3uMBJnjuUD4Ih7YwaYd1iqfktj0Uod8GCExl3Og8ifwB6" crossorigin="anonymous"></script> </head> <body> <div class="container"> @yield('content') </div> </body> </html> |
index.blade.php
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 | @extends('users.layout') @section('content') <div class="row"> <div class="col-lg-12 margin-tb"> <div class="pull-left mt-2"> <h2>Laravel 8 CRUD - Manajemen User</h2> </div> <div class="float-right my-2"> <a class="btn btn-success" href="{{ route('users.create') }}"> Create New User</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>Name</th> <th>Email</th> <th width="280px">Action</th> </tr> @foreach ($users as $user) <tr> <td>{{ ++$i }}</td> <td>{{ $user->name }}</td> <td>{{ $user->email }}</td> <td> <form action="{{ route('users.destroy',$user->id) }}" method="POST"> <a class="btn btn-info" href="{{ route('users.show',$user->id) }}">Show</a> <a class="btn btn-primary" href="{{ route('users.edit',$user->id) }}">Edit</a> @csrf @method('DELETE') <button type="submit" class="btn btn-danger">Delete</button> </form> </td> </tr> @endforeach </table> <div class="text-center"> {!! $users->links() !!} </div> @endsection |
create.blade.php
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 | @extends('users.layout') @section('content') <div class="container mt-5"> <div class="row justify-content-center align-items-center"> <div class="card" style="width: 24rem;"> <div class="card-header"> Tambah User </div> <div class="card-body"> @if ($errors->any()) <div class="alert alert-danger"> <strong>Whoops!</strong> There were some problems with your input.<br><br> <ul> @foreach ($errors->all() as $error) <li>{{ $error }}</li> @endforeach </ul> </div> @endif <form method="post" action="{{ route('users.store') }}" id="myForm"> @csrf <div class="form-group"> <label for="name">Name</label> <input type="text" name="name" class="form-control" id="name" aria-describedby="name" > </div> <div class="form-group"> <label for="email">Email</label> <input type="email" name="email" class="form-control" id="email" aria-describedby="email" > </div> <div class="form-group"> <label for="password">Password</label> <input type="password" name="password" class="form-control" id="password" aria-describedby="password" > </div> <button type="submit" class="btn btn-primary">Submit</button> </form> </div> </div> </div> </div> @endsection |
detail.blade.php
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 | @extends('users.layout') @section('content') <div class="container mt-5"> <div class="row justify-content-center align-items-center"> <div class="card" style="width: 24rem;"> <div class="card-header"> Detail User </div> <div class="card-body"> <ul class="list-group list-group-flush"> <li class="list-group-item"><b>Name: </b>{{$user->name}}</li> <li class="list-group-item"><b>Email: </b>{{$user->email}}</li> </ul> </div> <a class="btn btn-success mt-3" href="{{ route('users.index') }}">Kembali</a> </div> </div> </div> @endsection |
edit.blade.php
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 | @extends('users.layout') @section('content') <div class="container mt-5"> <div class="row justify-content-center align-items-center"> <div class="card" style="width: 24rem;"> <div class="card-header"> Edit User </div> <div class="card-body"> @if ($errors->any()) <div class="alert alert-danger"> <strong>Whoops!</strong> There were some problems with your input.<br><br> <ul> @foreach ($errors->all() as $error) <li>{{ $error }}</li> @endforeach </ul> </div> @endif <form method="post" action="{{ route('users.update', $user->id) }}" id="myForm"> @csrf @method('PUT') <div class="form-group"> <label for="name">Name</label> <input type="text" name="name" class="form-control" id="name" value="{{ $user->name }}" aria-describedby="name" > </div> <div class="form-group"> <label for="email">Email</label> <input type="text" name="email" class="form-control" id="email" value="{{ $user->email }}" aria-describedby="email" > </div> <div class="form-group"> <label for="writer">Password</label> <input type="password" name="password" class="form-control" id="password" value="{{ $user->password }}" aria-describedby="password" > </div> <button type="submit" class="btn btn-primary">Submit</button> </form> </div> </div> </div> </div> @endsection |
Oke, projek manajemen user kita sudah selesai, Oh ya buat kalian yang mungkin masih belum tahu cara menampilkan data pada view, kalian bisa lihat penjelasannya Disini sudah saya jelaskan secara detail.
Langkah 6: Hasil Akhir
Untuk menjalankan projek, ketikkan ini pada command-line.
php artisan serve
Akses dengan url localhost:8000/users maka kurang lebih hasilnya seperti berikut:
Oke sekian tutorial kali ini, jika kalian ingin mengembangkannya sendiri, silahkan dioprek-oprek.
Semoga Bermanfaat, Mohon maaf jika ada kurang lebihnya, silahkan tanya di komentar jika ada yang masih bingung.
Semoga Bermanfaat, Mohon maaf jika ada kurang lebihnya, silahkan tanya di komentar jika ada yang masih bingung.
Btw kalau mau download source nya bisa langsung KLIK DISINI
Tags:
Laravel
Saya coba dengan mencoba dengan crud seperti model user diatas, knp class Controllernya not found ya gan? Route nya sdh sesuai dengan penulisan.
BalasHapuscoba cek lagi penulisannya, besar kecil hurufnya, siapa tahu typo
HapusKalau gak gitu, kakak lupa untuk menambahkan
Hapuskode ini (use App\Http\Controllers\UserController;) di route.php nya
mantap
BalasHapusvisit this link
https://jatimtimes.com
https://malangtimes.com
https://jatimtimes.com/baca/238684/20210331/075500/pesan-berantai-penolakan-kenaikan-njop-beredar-di-tulungagung-ini-komentar-akd
php artisan make:migrate atau php artisan migrate?
BalasHapusphp artisan migrate
Hapusgan punya saya kenapa ya Target class [EmployeesController] does not exist. error gini apa yg di route nya kurang lengkap ya cuma ini kan yg di tambah
BalasHapususe App\Http\Controllers\EmployeesController;
Route::resource('employees', 'EmployeesController');
yg error ini saya sudah mendapatkan solusinya untuk router nya di ganti ini Route::get('/employees/index' , [EmployeesController::class,'index']);
HapusRoute::get('/employees/create' , [EmployeesController::class,'create']);
Route::resource('/employees' , EmployeesController::class);
Setelah EmployeesController kurang ::class itu, hehehe
Hapussaya menemukan error lagi Add [_token] to fillable property to allow mass assignment on [App\Models\Employees]. itu ketika insert dan edit itu kenapa ya token yg di maksud apa ya?
BalasHapussaya dapat solusinya di https://gist.github.com/rajucs/cea745d625be736e1ac0b19eba48f1aa
Hapusdengan memodifikasi modelnya menjadi seperti ini
protected $table = 'employees';
protected $fillable = [
'name',
'telepon',
'email',
'departement_id'
];
Ada link github nya?
BalasHapusItu dibagikan paling bawah post ada Klik Disini gan, langsung download sore comel nya disitu
HapusKlik Disini di paling bawah tulisan kak
HapusSelamat tahun baru, izin saya mau bertanya pak code poragram saya terjasi error di Controller terjadi pada sintax User $users = User ::latest()->paginate(5); ini bagaimana pak?
BalasHapusApakah nama model nya benar User? jika bukan silahkan diganti sesuai dengan nama model kakak
Hapus
BalasHapususers.store tidak ditemukan ketika membaca users.create, bagaimana ini??
Coba cek penulisannya kak, atau coba langsung download source code di github nya. Harusnya kalau udah sama kodenya jalan sih
HapusBaru terjun belajar pakai buku Duniailkom hehehe...
BalasHapus