CRUD Sederhana Laravel

Saya sarankan sebelum mengikuti tutorial ini, sebaiknya Anda telah menguasai tutorial saya sebelumnya tentang Pembuatan Autentikasi Sederhana. Karena ada beberapa yang tidak akan saya definisikan dengan jelas disini, seperti:

  • Instalasi Laravel
  • Generate Key untuk alasan Security
  • Pengaturan Database
  • dan mungkin ada lagi yang lainnya.

Jadi, saya asumsikan kalian memahami beberapa poin diatas sebelum meneruskan bacaan ini.

Saya juga mengharapkan kalian betul-betul memperhatikan tiap baris komentar yang ada pada syntax-syntax yang akan dibuat nanti. Alasannya karena penjelasan dari syntaxnya akan dibahas langsung disana.

Oke, mula-mula saya ingin pastikan kalian tahu dulu maksud dari CRUD disini. CRUD merupakan singkatan dari Create, Read, Update dan Delete. Bila diartikan berarti Menciptakan, Membaca, Memperbarui dan Menghapus.

Hampir semua jenis merk aplikasi pasti terdapat aktifitas CRUD didalamnya.

Sekarang pertanyaannya adalah:

  • Apa yang diciptakan?
  • Apa yang dibaca?
  • Apa yang diperbarui? dan
  • Apa yang akan dihapus?

Jawabannya TERGANTUNG. Tergantung dari apa yang menjadi isi dari aplikasi yang ingin Anda bangun. Sebagai contoh sederhana mari kita perhatikan bagaimana cara kerja sebuah blog?

  • Apakah tulisan dalam blog itu muncul dengan sendirinya? AJAIB. Tentu saja ada yang mengolah kata-katanya. Setelah kata-kata diolah, mau tidak mau si blogger harus terlibat langsung dengan aplikasi miliknya. Dengan cara men-CIPTA-kan tulisan baru berisi kata-kata yang diolah tadi agar bisa masuk kedalam database aplikasi blog miliknya.

  • Untuk diketahui bahwa isi tulisan si blogger tadi ditampung didalam database, artinya si aplikasi-lah yang kemudian akan mem-BACA-kan isinya dari database untuk ditampilkan kembali kepada si blogger.

  • Sekarang bagaimana bila si blogger melakukan kesalahan dalam penulisan kata? Atau mungkin ia ingin menambahkan beberapa kata dalam tulisannya? Tentunya aplikasi harus berkemampuan untuk mem-PERBARUI tulisan. Dimana proses kerjanya aplikasi akan mengambil isi dari database, dan si penulis melakukan perubahan, dan diakhiri dengan aplikasi mengubah isi tulisan lama dengan tulisan terbaru.

  • Dan bila si blogger merasa bila tulisan miliknya tidak layak untuk ditampilkan atau bahkan disimpan lagi, maka aplikasi seharusnya bisa membantunya meng-HAPUS tulisan tersebut dengan hanya sekali tekan.


Jadi jawaban untuk studi kasus diatas terkait ke-empat pertanyaan tadi adalah TULISAN.

  • BLOG -> Menciptakan TULISAN
  • BLOG -> Membaca TULISAN
  • BLOG -> Memperbarui TULISAN
  • BLOG -> Menghapus TULISAN

Dan untuk itulah, saya akan mencoba memperkenalkan CRUD pada Laravel dan bagaimana sistem kerjanya serta cara membuatnya bagi mereka yang ingin membuat proyek menggunakan Laravel.

Biasanya, aktifitas CRUD terjadi dalam Admin Panel yang secara tak langsung akan kita bangun. Sebagai contoh penerapannya, saya akan membuat Aplikasi Biodata Sederhana. Mari kita mulaiā€¦

Berikut demo hasil akhir aplikasi yang akan kita bangun :

##Persiapan Awal

###Siapkan Database

Langsung saja eksekusi perintah berikut melalui terminal atau cmd :

php artisan migrate:make buat_tabel_biodata

Anda bisa menemukan file migration yang dihasilkan di app/database/migrations.

Selanjutnya tambahkan beberapa syntax didalamnya.

// app/database/migrations/####_##_##_######_buat_tabel_biodata.php
<?php

use Illuminate\Database\Schema\Blueprint;
use Illuminate\Database\Migrations\Migration;

class BuatTabelBiodata extends Migration {

	/**
	 * Run the migrations.
	 *
	 * @return void
	 */
	public function up()
	{
		Schema::create('biodata', function($tabel) {
			$tabel->increments('id');
			$tabel->string('nama');
			$tabel->integer('usia');
			$tabel->string('jenis_kelamin');
			$tabel->string('telepon');
			$tabel->string('email');
			$tabel->timestamps();
		});
	}

	/**
	 * Reverse the migrations.
	 *
	 * @return void
	 */
	public function down()
	{
		Schema::drop('biodata');
	}

}


?>

Pastikan Anda telah melakukan pengaturan database. Kemudian lakukan perintah berikut :

php artisan migrate

Artinya sekarang kita memiliki tabel Biodata yang nantinya akan kita jadikan korban CRUD.

###Model

Profesi si Model ini simpel, yaitu sebagai perantara antara database dengan aplikasi.

Sekarang coba masuk ke direktori app/models. Lalu buat model baru dengan nama Biodata.php.

// app/models/Biodata.php
<?php
class Biodata extends Eloquent {
	# Penamaan tabel yang digunakan
	protected $table = 'biodata';
	# MASS ASSIGNMENT (maksudnya buatkan field-field yang diperbolehkan menerima inputan)
	protected $fillable = array('nama', 'usia', 'jenis_kelamin', 'telepon', 'email');
}
?>

Tugas model selesai.

###Route

Berapa jumlah route yang kira-kira dibutuhkan? Untuk mengetahuinya Anda bisa membayangkan alur programnya. Mulai dari tampilan awal, hingga proses delete.

Untuk mempersingkat waktu, saya buatkan 7 buah route yang dibutuhkan untuk pembuatan aplikasi ini :

  • Menampilkan semua data biodata
  • Menampilkan form pembuatan biodata baru
  • Melakukan proses pembuatan biodata baru
  • Menampilkan biodata perorangan
  • Menampilkan form perubahan biodata baru
  • Melakukan proses perubahan biodata
  • Hapus biodata berdasarkan id

Sekarang coba buka app/routes.php, dan buat ke-7-nya jadi seperti berikut :

// app/routes.php
<?php
# Halaman muka, untuk menampilkan semua data biodata yang ada. [localhost:8000/]
Route::get('/', function(){ return 'halaman index'; });

# Halaman yang berisi Form inputan Biodata baru [localhost:8000/buat]
Route::get('buat', function(){ return 'Halaman Tambah Biodata'; });

# Memproses Form lalu mengirimnya kedalam database [localhost:8000/buat]
Route::post('buat', function(){ return 'Proses Tambah Biodata'; });

# Menampilkan Biodata perorangan [localhost:8000/lihat/{id}]
Route::get('lihat/{id}', function(){ return 'Halaman Biodata Perorangan'; });

# Form untuk mengubah isi Biodata dalam database [localhost:8000/ubah/{id}]
Route::get('ubah/{id}', function(){ return 'Halaman Ubah Biodata'; });

# Memproses Form lalu mengirim yang baru kedalam database [localhost:8000/ubah/{id}]
Route::put('ubah/{id}', function(){ return 'Proses Perubahan Biodata'; });

# Tindakan untuk menghapus Biodata [localhost:8000/{id}/hapus]
Route::get('hapus/{id}', function(){ return 'Halaman Tambah Biodata'; });

?>

Sebelum lanjut, coba akses semua URL yang ada pada route diatas. Bila berhasil dan tidak ada yang error kita lanjut ke Controller.

###Controller

Jujur saja, sebenarnya pihak Laravel sendiri telah menyediakan fitur resource controller yang sebenarnya sangat membantu dalam pengolahan sebuah aktivitas CRUD karena sifatnya yang otomatis. Mungkin akan saya buatkan tutorial tersendiri nanti untuk yang satu ini.

Berhubung disini konteksnya saya ingin agar si pembaca mengerti alur programnya, maka saya akan jelaskan pembuatan semuanya secara manual saja.

Sebelumnya kita sempat membuat 7 buah route. Dan semua itu nantinya akan kita alih fungsikan menuju ke Controller.

Untuk itu, kita akan membuatkan 7 buah fungsi pada controller untuk menangani masing-masing route tadi.

Sekarang masuk ke direktori app/controllers/, dan buat file baru bernama BiodataController.php. Lalu isi seperti berikut :

// app/controllers/BiodataController.php
<?php
class BiodataController extends BaseController {
	# GET localhost:8000/
	public function index() {
		#
	}

	# GET localhost:8000/buat
	public function baru() {
		#
	}

	# POST localhost:8000/buat
	public function buat() {
		#
	}

	# GET localhost:8000/lihat/{id}
	public function lihat($id) {
		#
	}

	# GET localhost:8000/ubah/{id}
	public function ubah($id) {
		#
	}

	# PUT localhost:8000/ubah/{id}
	public function ganti($id) {
		#
	}

	# DELETE localhost:8000/hapus/{id}
	public function hapus($id) {
		#
	}
}

?>

Controller dengan 7 fungsi telah disiapkan, sekarang kita siapkan Views untuk tampilannya.

###View

Untuk menentukan halaman yang kita butuhkan, sepertinya kita lagi-lagi ditekankan untuk berkhayal.

Mari perhatikan perumpamaan dari saya, saya ambil dari route yang telah kita buat sebelumnya :

  • Menampilkan semua data biodata -> Butuh View -> index.blade.php
  • Menampilkan form pembuatan biodata baru -> Butuh View -> buat.blade.php
  • Melakukan proses pembuatan biodata baru
  • Menampilkan biodata perorangan -> Butuh View -> lihat.blade.php
  • Menampilkan form perubahan biodata baru -> Butuh View -> ubah.blade.php
  • Melakukan proses perubahan biodata
  • Hapus biodata berdasarkan id

Bener tidak?

Bila diperhatikan kembali, kita butuh 4 buah view untuk memenuhi standar aplikasi CRUD yang akan kita bangun.

Sekarang masuk ke direktori app/views/ dan ciptakan folder bernama biodata lalu buat 4 buah view baru disana. Strukturnya kurang lebih seperti berikut :


apps/
|___views/
|__|  biodata/
|__|__| buat.blade.php
|__|__| index.blade.php
|__|__| lihat.blade.php
|__|__| ubah.blade.php

Dengan ini persiapan awal kita selesai.

Dan sekarang saatnya untuk membuat Model, Controller, Route dan View yang kita siapkan tadi agar bisa saling bekerja sama.

Penerapan Program

Bila diingat-ingat lagi, sekarang kita memiliki :

Keterangan Request URL Method
Halaman Index, menampilkan semua biodata GET localhost:8000 index()
Halaman yg berisi Form inputan Biodata Baru GET localhost:8000/buat baru()
Memproses Form lalu menginputnya kedalam database POST localhost:8000/buat buat()
Menampilkan Biodata perorangan GET localhost:8000/lihat/{id} lihat($id)
Form untuk mengubah isi Biodata perorangan GET localhost:8000/ubah/{id} ubah($id)
Proses untuk mengubah data lama menjadi baru PUT localhost:8000/ubah/{id} ganti($id)
Tindakan untuk menghapus Biodata GET localhost:8000/hapus/{id} hapus($id)

Nanti kita akan coba membuatnya berurutan dari Create, Read, lalu Update dan Delete. Namun sebelum itu semua, kita akan membuat Index-nya terlebih dahulu.

###INDEX

Index disini akan menampilkan informasi atau daftar semua isi yang ada dalam database Anda yang dikemas kedalam sebuah table, dengan ketentuan database telah memiliki isi. Sedangkan bila database belum memiliki isi, maka INDEX akan menampilkan halaman seperti pada tampilan berikut :

Lakukan perubahan pada tahap-tahapan berikut :

####Route

// app/routes.php
<?php
# Halaman muka, untuk menampilkan semua data biodata yang ada. [localhost:8000]
Route::get('/', array('as' => 'beranda', 'uses' => 'BiodataController@index'));

...
?>

####Controller

// app/controllers/BiodataController.php
<?php
class BiodataController extends BaseController {
	# GET localhost:8000
	public function index() {
		# Tarik semua isi tabel biodata kedalam variabel
		$biodata = Biodata::all();
		# Tampilkan View
		return View::make('biodata.index', compact('biodata'));
	}
	
	...
?>

####View

// app/views/biodata/index.blade.php
<html>
	<head>
		<title>CRUD Biodata Sederhana</title>
	</head>
	<body>
		<h3>Daftar Biodata</h3>
		<!-- Siapkan variabel pesan untuk menampilkan nilai variabel yang diterima dari controller -->
		@if(Session::has('pesan'))
			{{ Session::get('pesan') }}
		@endif
		<!-- Jika tabel biodata memiliki isi, tampilkan isi berikut -->
		@if($biodata->count())
		<!-- Siapkan tombol untuk membuat biodata baru -->
		<p><a href="#">Tambah</a></p>
		<table>
			<thead>
				<tr>
					<th>Nama</th>
					<th>Usia</th>
					<th>Jenis Kelamin</th>
					<th>Telepon</th>
					<th>Email</th>
					<th>Aksi</th>
				</tr>
			</thead>
			<tbody>
				<!-- Lakukan Perulangan untuk menampilkan seluruh isi tabel -->
				@foreach($biodata as $data)
				<tr>					
					<td>{{ $data->nama }}</td>
					<td>{{ $data->usia }}</td>
					<td>{{ $data->jenis_kelamin }}</td>
					<td>{{ $data->telepon }}</td>
					<td>{{ $data->email }}</td>
					<!-- Siapkan tombol untuk edit dan hapus item tertentu -->
					<td>
						<a href="#">Lihat</a>
						<a href="#">Edit</a>
						<a href="#">Hapus</a>
					</td>
				</tr>
				@endforeach
			</tbody>
		</table>
		<!-- Sedangkan, bila tidak ada isinya, tampilkan isi berikut -->
		@else
		<p>Anda belum memiliki isi pada tabel biodata.</p>
		<p><a href="#">Tambah</a></p>
		@endif
	</body>
</html>

###CREATE

Create disini tujuannya untuk menciptakan atau menambah data biodata kedalam database. Yang nantinya akan ditampilkan dalam daftar INDEX dan tentu saja dalam READ dipembahasan selanjutnya.

Setelah Anda menyelesaikan CREATE pastikan hasilnya seperti ini :

####Route

// app/routes.php
<?php
...

# Halaman yang berisi Form inputan Biodata baru [localhost:8000/buat]
Route::get('buat', array('as' => 'baru', 'uses' => 'BiodataController@baru'));

# Memproses Form lalu mengirimnya kedalam database [localhost:8000/buat]
Route::post('buat', array('as' => 'buat', 'uses' => 'BiodataController@buat'));

...
?>

####Controller

// app/controllers/BiodataController.php
<?php
class BiodataController extends BaseController {
	...

	# GET localhost:8000/buat
	public function baru() {
		# Buat dropdown jenis kelamin
		$jenis_kelamin = array(
			'Laki-laki' => 'Laki-laki', 
			'Perempuan' => 'Perempuan');
		# Tampilkan halaman pembuatan biodata
		return View::make('biodata.buat', compact('jenis_kelamin'));
	}

	# POST localhost:8000/buat
	public function buat() {
		# Tarik semua inputan dari form kedalam variabel input
		$input = Input::all();
		# Buat aturan validasi
		$aturan = array(
			'nama' => 'required|min:3', 
			'usia' => 'required', 
			'telepon' => 'required', 
			'email' => 'required|email'
		);
		# Buat pesan error validasi manual
		$pesan = array(
			'nama.required' => 'Inputan Nama wajib diisi.',
			'nama.min' => 'Inputan Nama minimal 3 karakter.',
			'usia.required' => 'Inputan Usia wajib diisi.',
			'telepon.required' => 'Inputan Telepon wajib diisi.',
			'email.required' => 'Inputan Email wajib diisi.',
			'email.email' => 'Inputan harus berupa Email.'
		);
		# Validasi
		$validasi = Validator::make($input, $aturan, $pesan);
		# Bila validasi gagal
		if($validasi->fails()) {
			# Kembali kehalaman yang sama dengan pesan error
			return Redirect::back()->withErrors($validasi)->withInput();
		# Bila validasi sukses
		} else {
			# Buatkan variabel tiap inputan
			$nama = Input::get('nama');
			$usia = Input::get('usia');
			$jenis_kelamin = Input::get('jenis_kelamin');
			$telepon = Input::get('telepon');
			$email = Input::get('email');
			# Isi kedalam database
			Biodata::create(compact('nama', 'usia', 'jenis_kelamin', 'telepon', 'email'));
			# Kehalaman beranda dengan pesan sukses
			return Redirect::route('beranda')->withPesan('Biodata baru berhasil ditambahkan.');
		}
	}

	...
?>

####View

// app/views/biodata/index.blade.php
...
Baris 14	<p><a href="{{ route('baru') }}">Tambah</a></p>
...
Baris 48	<p><a href="{{ route('baru') }}">Tambah</a></p>
...
// app/views/biodata/buat.blade.php
<html>
	<head>
		<title>Tambah Biodata</title>
	</head>
	<body>
		<h2>Tambah Biodata Baru</h2>
		<!-- Buka form inutan lalu ruju ke identitas route "buat" -->
		{{ Form::open(array('route' => 'buat')) }}
			{{ Form::label('nama', 'Nama') }}
			{{ Form::text('nama') }}
			<!-- Bila ada errors validasi letakkan disini 
			variabel errors ($errors) berasal dari Controller ['withErrors'] -->
			@if($errors->has('nama'))
				{{ $errors->first('nama') }}
			@endif
			<br/>
			{{ Form::label('usia', 'Usia') }}
			{{ Form::text('usia') }}
			<!-- Penjelasan sama seperti diatas -->
			@if($errors->has('usia'))
				{{ $errors->first('usia') }}
			@endif
			<br/>
			{{ Form::label('jenis_kelamin', 'Jenis Kelamin') }}
			{{ Form::select('jenis_kelamin', $jenis_kelamin) }}
			@if($errors->has('jenis_kelamin'))
				{{ $errors->first('jenis_kelamin') }}
			@endif
			<br/>
			{{ Form::label('telepon', 'Telepon') }}
			{{ Form::text('telepon') }}
			@if($errors->has('telepon'))
				{{ $errors->first('telepon') }}
			@endif
			<br/>
			{{ Form::label('email', 'Email') }}
			{{ Form::text('email') }}
			@if($errors->has('email'))
				{{ $errors->first('email') }}
			@endif
			<br/>
			{{ Form::submit('Buat') }}
		{{ Form::close() }}
	</body>
</html>

###READ

Bila tadi kita telah berhasil melakukan penambahan data kedalam database, sekarang saatnya untuk menampilkan informasi lengkap mengenai data yang kita masukkan pada tahap CREATE tadi.

Untuk penerapannya, ikuti langkah berikut :

####Route

// app/routes.php
<?php
...

# Menampilkan Biodata perorangan [localhost:8000/lihat/{id}]
Route::get('lihat/{id}', array('as' => 'lihat', 'uses' => 'BiodataController@lihat'));

...
?>

####Controller

// app/controllers/BiodataController.php
<?php
class BiodataController extends BaseController {
	...

	# GET localhost:8000/lhat/{id}
	public function lihat($id) {
		# Ambil data dalam berdasarkan berdasarkan id
		$biodata = Biodata::find($id);
		# Tampilkan view
		return View::make('biodata.lihat', compact('biodata'));
	}

	...
}
?>

####View

// app/views/biodata/index.blade.php
...
Baris 37	<a href="{{ route('lihat', $data->id) }}">Lihat</a>
...
// app/views/biodata/lihat.blade.php
<html>
	<head>
		<title>Biodata {{ $biodata->nama }}</title>
	</head>
	<body>
		<h2>Informasi Biodata</h2>
		<p>Nama : {{ $biodata->nama }}</p>
		<p>Usia : {{ $biodata->usia }}</p>
		<p>Jenis Kelamin : {{ $biodata->jenis_kelamin }}</p>
		<p>Telepon : {{ $biodata->telepon }}</p>
		<p>Email : {{ $biodata->email }}</p>
		<br/>
		<a href="{{ route('beranda') }}">Kembali ke Index</a>
	</body>
</html>

###UPDATE

Kita memiliki halaman index, dimana ia akan menampilkan seluruh data yang ada dalam database dalam bentuk tabel.

Kita juga bisa melakukan penambahan biodata baru kedalamnya, sekaligus menampilkan kembali isi yang telah kita tambahkan.

Nah, penting untuk kita agar dapat melakukan perubahan data apabila suatu saat kita dapati bahwa terdapat data yang isinya kurang valid. Itu artinya kita harus menambahkan fitur UPDATE kedalam aplikasi.

Caranya ikuti langkah-langkah berikut :

####Route

// app/routes.php
<?php
...

# Form untuk mengubah isi Biodata dalam database [localhost:8000/ubah/{id}]
Route::get('ubah/{id}', array('as' => 'ubah', 'uses' => 'BiodataController@ubah'));

# Memproses Form lalu mengirim yang baru kedalam database [localhost:8000/ubah/{id}]
Route::put('ubah/{id}', array('as' => 'ganti', 'uses' => 'BiodataController@ganti'));

...
?>

####Controller

// app/controllers/BiodataController.php
<?php
class BiodataController extends BaseController {
	...

	# GET localhost:8000/ubah/{id}
	public function ubah($id) {
		# Buat dropdown jenis kelamin
		$jenis_kelamin = array(
			'Laki-laki' => 'Laki-laki', 
			'Perempuan' => 'Perempuan');
		# Tentukan biodata yang ingin diubah berdasarkan id
		$biodata = Biodata::find($id);
		# Tampilkan view
		return View::make('biodata.ubah', compact('jenis_kelamin', 'biodata'));
	}

	# PUT localhost:8000/ubah/{id}
	public function ganti($id) {
		# Tarik semua inputan dari form kedalam variabel input
		$input = Input::all();
		# Buat aturan validasi
		$aturan = array(
			'nama' => 'required|min:3', 
			'usia' => 'required', 
			'telepon' => 'required', 
			'email' => 'required|email'
		);
		# Buat pesan error validasi manual
		$pesan = array(
			'nama.required' => 'Inputan Nama wajib diisi.',
			'nama.min' => 'Inputan Nama minimal 3 karakter.',
			'usia.required' => 'Inputan Usia wajib diisi.',
			'telepon.required' => 'Inputan Telepon wajib diisi.',
			'email.required' => 'Inputan Email wajib diisi.',
			'email.email' => 'Inputan harus berupa Email.'
		);
		# Validasi
		$validasi = Validator::make($input, $aturan, $pesan);
		# Bila validasi gagal
		if($validasi->fails()) {
			# Kembali kehalaman yang sama dengan pesan error
			return Redirect::back()->withErrors($validasi)->withInput();
		# Bila validasi sukses
		} else {
			# Ubah isi database berdasarkan id
			$ganti = Biodata::find($id);

			$ganti->nama			= Input::get('nama');
			$ganti->usia 			= Input::get('usia');
			$ganti->jenis_kelamin 	= Input::get('jenis_kelamin');
			$ganti->telepon 		= Input::get('telepon');
			$ganti->email 			= Input::get('email');
			$ganti->save();
			# Kehalaman beranda dengan pesan sukses
			return Redirect::route('beranda')->withPesan('Biodata baru berhasil ditambahkan.');
		}
	}
	
	...
}
?>

####View

// app/views/biodata/index.blade.php
...
Baris 38	<a href="{{ route('ubah', $data->id) }}">Edit</a>
...
// app/views/ubah.blade.php
<html>
	<head>
		<title>Ubah Biodata {{ $biodata->nama }}</title>
	</head>
	<body>
		<h2>Ubah Informasi Biodata</h2>
		<!-- Kita gunaka model karena kita akan mengubah data yang telah ada -->
		{{ Form::model($biodata, array('route' => array('ganti', $biodata->id), 'method' => 'PUT')) }}
			{{ Form::label('nama', 'Nama') }}
			<!-- Parameter kedua merupakan value, jadi terlihat terisi dengan data nama sebelumnya -->
			{{ Form::text('nama', $biodata->nama) }}
			<!-- Bila ada errors validasi letakkan disini 
			variabel errors ($errors) berasal dari Controller ['withErrors'] -->
			@if($errors->has('nama'))
				{{ $errors->first('nama') }}
			@endif
			<br/>
			{{ Form::label('usia', 'Usia') }}
			{{ Form::text('usia', $biodata->usia) }}
			<!-- Penjelasan sama seperti diatas -->
			@if($errors->has('usia'))
				{{ $errors->first('usia') }}
			@endif
			<br/>
			{{ Form::label('jenis_kelamin', 'Jenis Kelamin') }}
			<!-- Untuk select, parameter 1 = id, parameter 2 = option, parameter 3 = value -->
			{{ Form::select('jenis_kelamin', $jenis_kelamin, $biodata->jenis_kelamin) }}
			@if($errors->has('jenis_kelamin'))
				{{ $errors->first('jenis_kelamin') }}
			@endif
			<br/>
			{{ Form::label('telepon', 'Telepon') }}
			{{ Form::text('telepon', $biodata->telepon) }}
			@if($errors->has('telepon'))
				{{ $errors->first('telepon') }}
			@endif
			<br/>
			{{ Form::label('email', 'Email') }}
			{{ Form::text('email', $biodata->email) }}
			@if($errors->has('email'))
				{{ $errors->first('email') }}
			@endif
			<br/>
			{{ Form::submit('Ubah') }}
		{{ Form::close() }}
		<a href="{{ route('beranda') }}">Kembali ke index</a>
	</body>
</html>

Dengan ini, fitur UPDATE selesai.

###DELETE

Terakhir adalah fitur untuk menghapus salah satu isi database. Langsung saja :

####Route

// app/routes.php
<?php
...

# Tindakan untuk menghapus Biodata [localhost:8000/{id}/hapus]
Route::get('hapus/{id}', array('as' => 'hapus', 'uses' => 'BiodataController@hapus'));

...
?>

####Controller

// app/controllers/BiodataController.php
<?php
class BiodataController extends BaseController {
	...

	# DELETE localhost:8000/hapus/{id}
	public function hapus($id) {
		# Hapus biodata berdasarkan id
		Biodata::find($id)->delete();
		# Kembali kehalaman yang sama dengan pesan sukses
		return Redirect::back()->withPesan('Biodata berhasil dihapus.');
	}
}
?>

####View

// app/views/biodata/index.blade.php
...
Baris 39	<a href="{{ route('hapus', $data->id) }}">Hapus</a>
...

Untuk tahap ini tidak membutuhka view baru, hanya perubahan pada halaman index saja.

###Selesai

CRUD selesai. Coba jalankn perintah php artisan serve melalui cmd atau terminal lalu kunjungi localhost:8000 melalui browser.

###KESIMPULAN

Sebenarnya bila ingin membuat sebuah aktivitas CRUD dalam aplikasi yang sedang kita bangun tata caranya sangat beragam, bahkan ada yang bersifat otomatis dengan memanfaatkan laravel generator milik Jeffrey Way. Disini sengaja dibuat sedikit lebih ribet agar supaya pembaca yang mengikuti tutorial ini mengerti dan paham, khususnya mengenai fungsi-fungsi dasar yang sering ditemui dan digunakan dalam membangun sebuah proyek menggunakan Laravel.

Untuk yang ingin melihat langsung hasil dari tutorial ini bisa :

###Download via GITHUB

Dan akhirnya dengan ini saya tutup jua tulisan ini dengan ucapan Terima kasih.