Anda di halaman 1dari 12

CRUD Sederhana Menggunakan Laravel 5.

6
oleh : Duman Care Khrisne
Modul ini dibuat karena saya tidak dapat memanfaatkan kembali Laravel 4.2, yang akan
digunakan dalam pelatihan 4 konsentrasi PS. Teknik Elektro, saya mohon maaf karena
laravel 4.2 memiliki app key yang sudah deprecate dan tidak didukung kembali.
Semoga modul latihan singkat ini dapat membantu peserta mendapatkan bantuan dalam
menggunakan Laravel

1. Install Composer menggunakan Xampp 7 dengan php 7.1


Download Xampp dan install
Download composer dari composer.org
Kalau tidak ada Internet kita geser sedikit posisi duduk kita supaya deket lab komputer

2. Buat Project Baru


Untuk membuat project baru dan sekalian mengistall laravel 5.6 buka command prompt
dan masuk/change directory dalam folder htdocs (tidak harus tapi disarankan), dan ketik
perintah :
composer create-project --prefer-dist laravel/laravel [nama project]

3. Memulai dengan membuat database


Sebelum membuat database buka file .env pada root directory dari project, dan ganti
baris kode di dalamnya agar menyesuaikan project kita. Contoh:

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

Selanjutnya adalah membuat database bernama duman di mysql server


Sebelum melakukan migrate, lakukan perubahan pada file AppServiceProvider.php
pada folder app/provider
Buat agar menjadi seperti :

<?php

namespace App\Providers;
use Illuminate\Support\ServiceProvider;
use Illuminate\Support\Facades\Schema; //ini ditambahin

class AppServiceProvider extends ServiceProvider


{
/**
* Bootstrap any application services.
*
* @return void
*/
public function boot()
{
Schema::defaultStringLength(191); //tambahin juga ini
// supaya panjang stringnya tidak kurang waktu migrate
}

/**
* Register any application services.
*
* @return void
*/
public function register()
{
//
}
}

Setelahnya kita dapat mengeksekusi perintah migrate pada command line

php artisan migrate

dengan ini laravel akan membuatkan kita dua buah tabel users dan password_reset
secara otomatis

selanjutnya kita akan membuat model untuk data yang ingin kita simpan, dalam contoh
ini saya ingin menyimpan Mahasiswa dalam web. Cukup ketik perintah dalam command
line

php artisan make:model Mahasiswa –m

maka dalam folder app akan muncul model dengan nama Mahasiswa.php dan file
migrasi create_mahasiswa_tabel.php pada folder database/migration.

Buka file migration yang baru saja terbentuk dan definisikan struktur tabel mahasiswa
agar seperti :
public function up()
{
Schema::create('mahasiswas', function (Blueprint $table) {
$table->increments('id');
$table->string('nim');
$table->string('nama');
$table->timestamps();
});
}

Id tabel auto increment dan data dalam tabel adalah dua buah string nim dan nama.

Eksekusi perintah migrate pada command line

php artisan migrate

sehingga tabel mahasiswas terbentuk dalam mysql server kita.

4. Buat Modul Create


Untuk membangun modul create data mahasiswa maka kita akan membangun
controller dan view untuk model mahasiswa yang sudah kita buat
Supaya lebih gampang memanggil, kita buatkan folder baru pada folder resource/views
Dalam contoh ini saya membuat folder test sehingga nanti view kita akan disimpan
dalam folder resources/views/test. Kita akan membuat sebuah form untuk menerima
input data dari user, supaya mudah copy paste saja code dibawah ini :

<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title>CRUD Mahasiswa</title>
<link rel="stylesheet" href="{{asset('css/app.css')}}">
</head>
<body>
<br><br>
<div class="container">
<h2>Input Mahasiswa Baru</h2>
<br/>
<form method="post">
<div class="row">
<div class="form-group col-md-4">
<label
for="name">NIM:</label>
<input type="text"
class="form-control" name="nim">
</div>
</div>
<div class="row">
<div class="form-group col-md-4">
<label
for="price">Name:</label>
<input type="text"
class="form-control" name="nama">
</div>
</div>
<div class="row">
<div class="form-group col-md-4">
<button type="submit"
class="btn btn-success" style="marginleft:38px">Insert Mahasiswa</button>
</div>
</div>
</form>
</div>
</body>
</html>

Simpan dengan nama input.blade.php dan view sudah selasai kita siapkan.

Sekarang kita harus membuat controller untuk crud mahasiswa kita, cukup ketikkan
pada command line:

php artisan make:controller MahasiswaController --resource

maka akan muncul MahasiswaController.php pada folder app/Http/controller/


di dalamnya sudah otomatis terdapat fungsi-fungsi CRUD yang dapat kita lengkapi sebentar lagi

pada command line kita periksa dulu route apa saja yang sudah ada pada project kita dengan
mengetik :

php artisan route:list

maka akan tampil route list kita saat ini, namun belum ada route untuk controler
mahasiswa kita. Untuk itu perlu kita tambahkan baris pada web.php pada folder /routes
coba ulangi perintah diatas dan seharusnya kita dapatkan route list untuk controller
mahasiswa kita.
Setelahnya kita bisa kelola controller kita, buka file MahasiswaController.php, dan
tambahkan code pada fungsi create() agar menjadi seperti :

public function create()


{
return view('test.input');
}
View yang ingin kita tampilkan ketika melakukan proses input data mahasiswa adalah
view yang ada dalam folder tes dengan nama input.blade.php.

Sekarang coba kira serve dengan perintah php artisan serve

Maka kita akan dapatkan form kita seperti :

Setelah menampilkan form, kita dapat mengisi form, tapi kita isi dulu validasi terhadap
form yang sudah kita buat sehingga menjadi :

<form method="post" action="{{url('test')}}">


{{csrf_field()}}

Untuk informasi mengenai csrf -> silahkan melakukan googling ke SO, atau nanti saya
jelaskan

Kita juga harus mengedit Mahasiswa.php dengan menambahkan fillabel (field yang ingin
diisi) sehingga menjadi :
namespace App;
use Illuminate\Database\Eloquent\Model;
class Mahasiswa extends Model
{
protected $fillable = ['nim','nama'];
}
Jika kita melihat routes maka ada post request yang mempunyai rute /test dan fungsi
store dalam file MahasiswaController.php. Sehingga kita perlu kode untuk fungsi store
dalam rangka menyimpan data ke dalam database.

Tambahkan baris kode berikut pada awal file MahasiswaController.php


Dan beberapa kode pada method store sehingga sekarang MahasiswaController.php
memiliki kode sebagai berikut :

<?php

namespace App\Http\Controllers;

use Illuminate\Http\Request;
use App\Mahasiswa;

class MahasiswaController extends Controller


{
... ... ... ada code lain tapi saya tidak tampilkan

public function store(Request $request)


{
$mahasiswa = $this->validate(request(), [
'nim' => 'required',
'nama' => 'required'
]);

Mahasiswa::create($mahasiswa);

return back()->with('success', 'Mahasiswa telah berhasil


diinputkan');;
}
... ... ... ada code lain tapi saya tidak tampilkan
}
Supaya pesan errornya bisa tampil di view, kita edit sedikit lagi view form kita agar hasil
akhirnya menjadi (yang saya buat warna lain itu yang perlu ditambahkan) :

<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title>CRUD Mahasiswa</title>
<link rel="stylesheet" href="{{asset('css/app.css')}}">
</head>
<body>
<br><br>
<div class="container">
<h2>Input Mahasiswa Baru</h2>
@if ($errors->any())
<div class="alert alert-danger">
<ul>
@foreach ($errors->all() as $error)
<li>{{ $error }}</li>
@endforeach
</ul>
</div>
@endif
@if (\Session::has('success'))
<div class="alert alert-success">
<p>{{ \Session::get('success') }}</p>
</div>
@endif
<br/>
<form method="post" action="{{url('test')}}">
{{csrf_field()}}
<div class="row">
<div class="form-group col-md-4">
<label
for="name">NIM:</label>
<input type="text"
class="form-control" name="nim">
</div>
</div>
<div class="row">
<div class="form-group col-md-4">
<label
for="price">Name:</label>
<input type="text"
class="form-control" name="nama">
</div>
</div>
<div class="row">
<div class="form-group col-md-4">
<button type="submit"
class="btn btn-success" style="marginleft:38px">Insert Mahasiswa</button>
</div>
</div>
</form>
</div>
</body>
</html>

Serve lagi melalui command prompt dan uji coba proses inputnya. Seharusnya input
berhasil dan pesannya muncul, kalau ada yang tidak sesuai akan muncul pesan
kesalahan.

5. Buat Modul Read


Untuk membuat modul read, kita perlu membentuk sebuah view, saya beri nama
index.blade.php, silahkan gunakan tampilan dengan kode sumber seperti dibawah ini :

<!DOCTYPEhtml>
<html>
<head>
<meta charset="utf-8">
<title>CRUD Mahasiswa</title>
<link rel="stylesheet" href="{{asset('css/app.css')}}">
</head>
<body>
<div class="container">
<br/>
@if(\Session::has('success'))
<div class="alert alert-success">
<p>{{ \Session::get('success') }}</p>
</div><br/>
@endif
<table class="table table-striped">
<thead>
<tr>
<th>ID</th>
<th>Nim</th>
<th>Nama</th>
<th colspan="2">Action</th>
</tr>
</thead>
<tbody>
@foreach($mahasiswas as $mahasiswa)
<tr>
<td>{{$mahasiswa['id']}}</td>
<td>{{$mahasiswa['nim']}}</td>

<td>{{$mahasiswa['nama']}}</td>
<td><a href="" class="btn
btn-warning">Ubah</a></td>
<td>
<button class="btn
btn-danger" type="submit">Hapus</button>
</td>
</tr>
@endforeach
</tbody>
</table>
</div>
</body>
</html>

Lalu pada MahasiswaController.php, kita tambahkan baris kode pada function index-nya,
sehingga menjadi seperti :
public function index()
{
$mahasiswas = Mahasiswa::all()->toArray();
return view('test.index', compact('mahasiswas'));
}

Sehingga ketika kita serve kembali dan jalankan pada browser kita dapatkan tampilan
seperti berikut :
6. Buat Modul Update
Untuk memulai menlakukan update kita harus sedikit mengubah view form pada
index.blade.php, terutama pada tombol ubah yang belum kita isi fungsi-nya, ubah
kodenya agar menjadi seperti berikut :
<td><a href="{{action('ProductController@edit', $product['id'])}}"
class="btn btn-warning">Ubah</a></td>

Langkah selanjutnya adalah melakukan perubahan terhadap fungsi edit di dalam file
MahasiswaController.php sehingga dapat menampilkan form untuk perubahan
informasi mahasiswa. Berikut ini adalah kode untuk fungsi edit :
public function edit($id)
{
$mahasiswa = Mahasiswa::find($id);
return view('test.edit',compact('mahasiswa','id'));
}

Dalam kode untuk edit kita memanggil view yang bernama edit (edit.blade.php) pada
folder resource/test, yang belum kita punya, maka langkah berikutnya adalah membuat
view edit pada folder test
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title>CRUD Mahasiswa</title>
<link rel="stylesheet" href="{{asset('css/app.css')}}">
</head>
<body>
<div class="container">
<br/>
<h2>Perubahan Data Mahasiswa</h2><br/>
@if($errors->any())
<div class="alert alert-danger">
<ul>
@foreach($errors->all() as $error)
<li>{{ $error }}</li>
@endforeach
</ul>
</div>
<br/>
@endif
<form method="post"
action="{{action('MahasiswaController@update',$id)}}">
{{csrf_field()}}
<input name="_method" type="hidden"
value="PATCH">
<div class="row">
<div class="form-group col-md-4">
<label for="nim">Nim:</label>
<input type="text"
class="form-control" name="nim" value="{{$mahasiswa->nim}}">
</div>
</div>
<div class="row">
<div class="form-group col-md-4">
<label
for="nama">Nama:</label>
<input type="text"
class="form-control" name="nama" value="{{$mahasiswa->nama}}">
</div>
</div>
<div class="row">
<div class="form-group col-md-4">
<button type="submit" class="btnbtn-
success" style="marginleft:38px">Update Data</button>
</div>
</form>
</div>
</body>
</html>

Kita lihat pada kode yang saya highlight, ada kode yang harus kita buat dulu untuk muara
ketika form update di-submit, jika ini kita tidak buat maka laravel akan error karena
kebingungan mencari kemana data akan dikirim. Pada MahasiswaController.php, fungsi
update harus kita isi logika seperti berikut :
public function update(Request $request, $id)
{
$mahasiswa = Mahasiswa::find($id);
$this->validate(request(), [
'nim' => 'required',
'nama' => 'required'
]);
$mahasiswa->name = $request->get('name');
$mahasiswa->price = $request->get('price');
$mahasiswa->save();
return redirect('test')->with('success','Data Mahasiswa Update');
}

7. Buat Modul Delete


Terakhir pada saat tombol hapus di klik akan terjadi perpindahan data, maka dalam tombol
hapus di view form index (index.blade.php) harus ditambah sedikit kode agar menjadi
seperti ini.
<td>
<form action="{{action('MahasiswaController@destroy',
$mahasiswa['id'])}}" method="post">
{{csrf_field()}}
<input name="_method" type="hidden" value="DELETE">
<button class="btn btn-danger" type="submit">Hapus</button>
</form>
</td>

Lalu kita tinggal menuliskan logika di fungsi destroy pada MahasiswaController.php dengan
kode sumber seperti berikut :
public function destroy($id)
{
$mahasiswa = Mahasiswa::find($id);
$Mahasiswa->delete();
return redirect('test')->with('success','Data Mahasiswa Delete');
}

Selesai sudah CRUD sederhana dengan laravel, jika kita buat dengan php native mungkin
akan lama, tapi dengan for each, sintaks insert, update, delete yang sudah dibantu oleh
controller laravel pekerjaannya jadi lebih mudah, semoga modul ini bermanfaat dan
menebus pelatihan kita di hari pertama

Terimakasih atas atensinya, semoga bermanfaat untuk catatan dan pengembangan lain
dikemudian hari.

Anda mungkin juga menyukai