Untuk pembejalaran pembuat aplikasi CRUD (Create, Read, Update, Delete) di Laravel 5.5 kita akan membuat contoh database karyawan. Kita tidak akan mengunakan HTML/Form helper di Laravel.
Kebutuhan
– composer
– text editor (Sublime Text)
– koneksi internet
Buat Database
Saya menggunakan MySQL/MariaDB, login ke MySQL
mysql -u root -p
buat database baru dengan nama crudlaravel55
create database crudlaravel55;
Install Laravel
Install laravel dengan composer
composer create-project --prefer-dist laravel/laravel crudlaravel5
Edit file .env
Untuk koneksi ke database, ubah file .env
DB_DATABASE=homestead DB_USERNAME=homestead DB_PASSWORD=secret
contoh
DB_DATABASE=crudlaravel55 DB_USERNAME=crudlaravel55 DB_PASSWORD=crudlaravel55123
Membuat Tabel Database
Kita akan membuat satu tabel dengan nama karyawan
php artisan make:migration tabel_karyawan ## outputnya Created Migration: 2017_11_10_033011_tabel_karyawan
Edit file di migration yang baru dibuat, letaknya ada di folder database/migrations/, di contoh nama filenya database/migrations/2017_11_10_033011_tabel_karyawan.php
Ubah menjadi
public function up() { Schema::create('karyawan', function (Blueprint $table) { $table->increments('id'); $table->string('nama_lengkap'); $table->string('NIK'); $table->string('Jabatan'); $table->timestamps(); }); } public function down() { Schema::dropIfExists('karyawan'); }
Buka file app/Providers/AppServiceProvider.php ubah function boot() menjadi
public function boot() { \Schema::defaultStringLength(191); }
Sekarang jalankan php artisan migrate agar tabel tersebut dibuat di database
php artisan migrate
Routes
Buka file routes/web.php tambahkan
Route::resource('karyawan', 'KaryawanController');
Coding CRUD
Disini baru kita mulai proses kodingnya.
1. Model
Buat model untuk tabel karyawan yang tadi dibuat
php artisan make:model Karyawanfile model yang baru dibuat ada di app/Karyawan.php, ubah menjadi
class Karyawan extends Model { protected $table = 'karyawan'; protected $fillable = ['nama_lengkap', 'NIK', 'jabatan']; }
2. Controller
Buat controller untuk Karyawan
php artisan make:controller KaryawanControllerFile controller tersebut berada di app/Http/Controllers/KaryawanController.php, isi lengkap file KaryawanController.php
<?php namespace App\Http\Controllers; use Illuminate\Http\Request; use App\Karyawan; class KaryawanController extends Controller { public function index() { $karyawan = Karyawan::all(); return view('karyawan.index', compact('karyawan')); } public function create() { return view('karyawan.create'); } public function edit($id) { $karyawan = Karyawan::findOrFail($id); return view('karyawan.edit', compact('karyawan')); } public function store(Request $request) { Karyawan::create($request->all()); \Session::flash('notifikasi', 'Karyawan berhasil ditambah.'); return redirect('karyawan'); } public function update(Request $request, $id) { $karyawan = Karyawan::findOrFail($id); $karyawan->update($request->all()); \Session::flash('notifikasi', 'Karyawan berhasil diubah.'); return redirect('karyawan'); } public function destroy($id) { Karyawan::destroy($id); \Session::flash('notifikasi', 'Karyawan berhasil dihapus.'); return redirect('karyawan'); } }
3. View
Buat file resources/views/template.blade.php yang akan digunakan sebagai master template untuk web. Isi file template.blade.php
<!doctype html>
<html lang="en">
<head>
<title>CRUD Laravel 5.5 - jaranguda.com</title>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1, shrink-to-fit=no">
<link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/4.0.0-beta.2/css/bootstrap.min.css" integrity="sha384-PsH8R72JQ3SOdhVi3uxftmaW6Vc51MKb0q5P2rRUpPvrszuE4W1povHYgTpBfshb" crossorigin="anonymous">
<style type="text/css">
body {
padding-top: 2rem;
}
</style>
</head>
<body>
<main role="main">
<div class="container">
<div class="row">
<div class="col-md-12">
@if (session('notifikasi'))
<div class="alert alert-success">
{{ session('notifikasi') }}
</div>
@endif
@yield('content')
</div>
</div>
</div>
</main>
<script src="https://code.jquery.com/jquery-3.2.1.slim.min.js" integrity="sha384-KJ3o2DKtIkvYIK3UENzmM7KCkRr/rE9/Qpg6aAZGJwFDMVNA/GpGFF93hXpG5KkN" crossorigin="anonymous"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/popper.js/1.12.3/umd/popper.min.js" integrity="sha384-vFJXuSJphROIrBnz7yo7oB41mKfc8JzQZiCq4NCceLEaO4IHwicKwpJf9c9IpFgh" crossorigin="anonymous"></script>
<script src="https://maxcdn.bootstrapcdn.com/bootstrap/4.0.0-beta.2/js/bootstrap.min.js" integrity="sha384-alpBpkh1PFOepccYVYDB4do5UnbKysX5WZXm3XxPqe5iKTfUKjNkCk9SaVuEZflJ" crossorigin="anonymous"></script>
</body>
</html>Untuk menampilkan data dari controller karyawan, kita akan membuat satu folder karyawan dan beberapa file. Buat folder karyawan di resources/views/.
Index dan Delete
isi file index.blade.php (resources/views/karyawan/index.blade.php)
@extends('template')
@section('content')
<h3>Data Karyawan</h3>
<hr>
Tambah Karyawan
<hr>
@if(count($karyawan) > 0)
<table class="table">
<thead>
<tr>
<th>Nama Lengkap</th>
<th>NIK</th>
<th>Jabatan</th>
<th>#</th>
</tr>
</thead>
<tbody>
@foreach ($karyawan as $data)
<tr>
<td>{{ $data->nama_lengkap }}</td>
<td>{{ $data->NIK}}</td>
<td>{{ $data->jabatan }}</td>
<td>
<a href="{{ URL::route('karyawan.edit',$data->id) }}" class="btn btn-info btn-sm"></i> Edit</a>
<form action="{{action('KaryawanController@destroy', $data->id)}}" method="post" class="hapus" style="display:inline">
{{csrf_field()}}
<input name="_method" type="hidden" value="DELETE">
<button class="btn btn-danger" type="submit">Delete</button>
</form>
</td>
</tr>
@endforeach
</tbody>
</table>
@else
belum ada data
@endif
@stopCreate
isi file create.blade.php (resources/views/karyawan/create.blade.php)
@extends('template')
@section('content')
<h3>Data Karyawan</h3>
<hr>
<form class="form-horizontal" role="form" method="POST" action="{{ url('/karyawan') }}">
{{ csrf_field() }}
<div class="form-group{{ $errors->has('nama_lengkap') ? ' has-error' : '' }}">
<label for="nama_lengkap" class="col-md-4 control-label">Nama</label>
<div class="col-md-6">
<input id="nama_lengkap" type="text" class="form-control" name="nama_lengkap" value="{{ old('nama_lengkap') }}" required="required">
@if ($errors->has('nama_lengkap'))
<span class="help-block">
<strong>{{ $errors->first('nama_lengkap') }}</strong>
</span>
@endif
</div>
</div>
<div class="form-group{{ $errors->has('NIK') ? ' has-error' : '' }}">
<label for="NIK" class="col-md-4 control-label">NIK</label>
<div class="col-md-6">
<input id="NIK" type="text" class="form-control" name="NIK" value="{{ old('NIK') }}" required="required">
@if ($errors->has('NIK'))
<span class="help-block">
<strong>{{ $errors->first('NIK') }}</strong>
</span>
@endif
</div>
</div>
<div class="form-group{{ $errors->has('jabatan') ? ' has-error' : '' }}">
<label for="jabatan" class="col-md-4 control-label">Jabatan</label>
<div class="col-md-6">
<input id="jabatan" type="text" class="form-control" name="jabatan" value="{{ old('jabatan') }}" required="required">
@if ($errors->has('jabatan'))
<span class="help-block">
<strong>{{ $errors->first('jabatan') }}</strong>
</span>
@endif
</div>
</div>
<div class="form-group">
<div class="col-md-6 col-md-offset-4">
<button type="submit" class="btn btn-primary">
<i class="fa fa-btn fa-user"></i> Simpan
</button>
</div>
</div>
</form>
@stopEdit
isi file edit.blade.php (resources/views/karyawan/edit.blade.php)
@extends('template')
@section('content')
<h3>Data Karyawan</h3>
<hr>
@if(isset($karyawan))
<form class="form-horizontal" role="form" method="POST" action="{{ url('/karyawan/' . $karyawan->id) }}">
<input name="_method" type="hidden" value="PATCH">
{{ csrf_field() }}
<div class="form-group{{ $errors->has('nama_lengkap') ? ' has-error' : '' }}">
<label for="nama_lengkap" class="col-md-4 control-label">Nama</label>
<div class="col-md-6">
<input id="nama_lengkap" type="text" class="form-control" name="nama_lengkap" value="{{ old('nama_lengkap', $karyawan->nama_lengkap) }}" required="required">
@if ($errors->has('nama_lengkap'))
<span class="help-block">
<strong>{{ $errors->first('nama_lengkap') }}</strong>
</span>
@endif
</div>
</div>
<div class="form-group{{ $errors->has('NIK') ? ' has-error' : '' }}">
<label for="NIK" class="col-md-4 control-label">NIK</label>
<div class="col-md-6">
<input id="NIK" type="text" class="form-control" name="NIK" value="{{ old('NIK', $karyawan->NIK) }}" required="required">
@if ($errors->has('NIK'))
<span class="help-block">
<strong>{{ $errors->first('NIK') }}</strong>
</span>
@endif
</div>
</div>
<div class="form-group{{ $errors->has('jabatan') ? ' has-error' : '' }}">
<label for="jabatan" class="col-md-4 control-label">Jabatan</label>
<div class="col-md-6">
<input id="jabatan" type="text" class="form-control" name="jabatan" value="{{ old('jabatan', $karyawan->Jabatan) }}" required="required">
@if ($errors->has('jabatan'))
<span class="help-block">
<strong>{{ $errors->first('jabatan') }}</strong>
</span>
@endif
</div>
</div>
<div class="form-group">
<div class="col-md-6 col-md-offset-4">
<button type="submit" class="btn btn-primary">
<i class="fa fa-btn fa-user"></i> Simpan
</button>
</div>
</div>
</form>
@endif
@stop
itu jalaninnya gimana ya ?