Laravel Tutorial: Menggunakan Route Model Binding - Hallo sahabat Dev-Create, Pada Artikel yang anda baca kali ini dengan judul Laravel Tutorial: Menggunakan Route Model Binding, kami telah mempersiapkan artikel ini dengan baik untuk anda baca dan ambil informasi didalamnya. mudah-mudahan isi postingan Artikel laravel, Artikel laravel model binding, Artikel laravel route, Artikel php, Artikel Tutorial, Artikel web, Artikel web series, yang kami tulis ini dapat anda pahami. baiklah, selamat membaca.

Judul : Laravel Tutorial: Menggunakan Route Model Binding
link : Laravel Tutorial: Menggunakan Route Model Binding

Baca juga


Laravel Tutorial: Menggunakan Route Model Binding


Halo sobat koder! Masih ngoding kah? Tentunya masih dong...

Nah pada tutorial kali ini kita akan belajar menggunakan model binding pada laravel. Apa sih model binding itu? Jadi pada laravel 5 keatas diperkenalkan fitur baru yaitu Route Model Binding. Fungsi dari route model binding sendiri adalah untuk memudahkan kita dalam melakukan dependency injection suatu model berdasarkan parameter yang dilempar ke route tanpa harus menggunakan id nya. Gampangnya kalo biasanya kita harus melempar id ke route sebagai parameter, kemudian digunakan untuk meretrieve model yang sesuai dengan id tersebut, sekarang sudah bisa menggunakan model binding untuk melempar modelnya langsung ke route. Cukup mempermudah kita yang sering menggunakan CRUD di laravel.

Masih belum paham? Gini nih maksudnya..
Untuk menampilkan suatu buku, biasanya kita harus melempar id buku ke URI, misalnya buku/24 (dimana 24 adalah id buku). Kemudian pada route atau controller kita melakukan pencarian ke database menggunakan id tersebut.
Route::get('buku/{id}', function($id){
$buku = \App\Buku::findOrFail($id);
return view('buku.show', compact('buku'));
});
Nah, cara tersebut cukup panjang dan kurang efisien, karena kita harus melempar id buku ke URI, kemudian kita mencocokan id buku ke database, baru kita bisa mendapatkan modelnya. Oleh karena itu, laravel menciptakan cara yang lebih mudah, yaitu langsung menggunakan model sebagai parameternya. Nah, untuk melakukannya, ada beberapa cara yang disediakan oleh laravel, kamu bebas mau menggunakan yang mana aja sesuai dengan kebutuhan.

Cara 1: Implicit Model Binding

Kita akan menggunakan contoh diatas, dan mengubahnya menggunakan laravel Route Model Binding, khususnya implicit model binding. Cara ini menurut saya paling simpel, jadi kita cukup mengubah parameter id buku menjadi model bukunya saja. Sehingga koding diatas akan berubah menjadi seperti ini.
Route::get('buku/{buku}', function(\App\Buku $buku){
return view('buku.show', compact('buku'));
});
Dengan cara diatas, terlihat kalau kodingannya jadi jauh lebih simpel. Kita cukup melemparkan id modelnya secara langsung ke URI, kemudian pada anonymous function nya kita cukup mendefinisikan model bukunya. Laravel akan otomatis mencari model yang sesuai dengan id model dan menampilkannya pada view.

Cara diatas sudah cukup bagus dan efisien, namun ada kalanya melemparkan id langsung ke URI adalah bad practices. Hal ini dikarenakan user dapat melihat atau mencoba-coba id yang lain, yang bahkan mungkin bukan hak mereka untuk melihatnya. Oleh karena itu disarankan menggunakan atribut unik yang lain, misalkan slug. Nah, bagaimana kalau kita ingin menggunakan slug untuk dilempar sebagai parameternya? Misalkan buku/laskar-pelangi (dimana laskar-pelangi merupakan slug dari buku tersebut).

Kita cukup mendefinisikan fungsi getRouteKeyName()pada model yang bersangkutan (dalam hal ini berarti buku). Nah, kita ubah kodeingan modelnya pada app/Buku.php
public function getRouteKeyName(){
return 'slug';
}
Dengan begitu kita akan melemparkan slug ke URI sebagai parameternya secara otomatis. Mudah kan!

Cara 2: Explicit Model Binding

Dibandingkan cara pertama, menggunakan laravel explicit model binding terbilang sedikit ribet. Cara ini mengharuskan kita untuk mendaftarkan route model ke file app/providers/RouteServiceProvider.php. Dengan kasus yang sama seperti diatas, kita akan menambahkan kode pada method boot().
public function boot()
{
parent::boot();
Route::model('buku', App\Buku::class);
}
Kemudian pada routes/web.php kita akan menambahkan route yang memiliki parameter {buku}
Route::get('buku/{buku}', function (App\Buku $buku) {
//
});
Pada contoh diatas, kita telah melakukan binding pada semua parameter {buku} ke model App\Buku, sehingga model Buku akan otomatis di inject ke dalam route. Keuntungan lainnya adalah, jika model yang dilempar ke parameter tidak ditemukan, maka laravel akan otomatis memberikan response 404 not found.
Jika temen temen ingin menggunakan logika sendiri pada proses pencocokan nilai parameter ke database, kita bisa menggunakan fungsi bind(). Contohnya seperti ini.
public function boot()
{
parent::boot();
Route::bind('buku', function ($value) {
return App\Buku::where('name', $value)->first() ?? abort(404);
});
}

Penggunaan pada Controller

Jika temen temen tidak ingin menggunakan closure pada route, kita bisa memasukan logika pada controller, sehingga koding jadi lebih rapi. Dengan contoh kasus yang sama seperti diatas, kita akan menggunakan implicit route binding pada routes/web.php
Route::get('buku/{buku}', 'BukuController@show');
Kemudian buat BukuController dan buat method show() seperti dibawah:
public function show(Buku $buku)
{
return view('buku', compact('buku'));
}
Perhatikan bahwa method show() menggunakan parameter berupa model, bukan berupa id seperti umumnya. Cukup mudah kan penggunaannya, selain itu dengan menggunakan model binding juga akan menghemat waktu jika kalian banyak melakukan CRUD pada aplikasi yang sedang kalian buat.


Akhir Kata

Penggunaan route model binding ini dapat kalian aplikasikan pada aplikasi yang butuh banyak CRUD didalamnya. Dengan menggunakan route model binding ini juga akan menghemat waktu dalam proses pembuatannya, selain itu listing kode juga akan menjadi lebih rapi dan hemat baris.

Jadi, sekian dulu untuk tutorial kali ini, semoga bermanfaat, dan jangan lupa untuk terus ngoding


Demikianlah Artikel Laravel Tutorial: Menggunakan Route Model Binding

Sekianlah artikel Laravel Tutorial: Menggunakan Route Model Binding kali ini, mudah-mudahan bisa memberi manfaat untuk anda semua. baiklah, sampai jumpa di postingan artikel lainnya.

Anda sekarang membaca artikel Laravel Tutorial: Menggunakan Route Model Binding dengan alamat link https://dev-create.blogspot.com/2017/12/laravel-tutorial-menggunakan-route.html