Tutorial Laravel 7 : Route Model Binding Lebih Praktis

Kukuhs.kom 29 Juli 2020 05:53:21

Assalamualaikum Warohmatulloh Wabarokatuh, setelah rilis Laravel 7 beberapa waktu lalu, kali ini saya akan membahas detail satu persatu perubahan yang terjadi di Laravel 7. Pertama kita akan bahas tentang mendefinisikan custom key pada routing atau route model binding di Laravel.

Oke secara gampangnya ketika kita ingin mengubah key dari route kita yang pada default adalah menggunakan primary key atau id. Maka sewajarnya untuk mengubahnya menggunakan custom key maka kita definiskan atau tambahkan baris kode untuk override method getRouteKeyName(). Kurang lebih seperti ini jika kita mau mengubah key name menjadi slug atau mengambil field slug pada table.

public function getRouteKeyName()
{
   return 'slug';
}

Pada Laravel 7 hal tersebut bisa dilakukan dengan lebih sederhana, dengan mendefiniskan custom key pada file route dengan menambahkan tanda : diikuti dengan nama field / key yang akan digunakan.

use App\Article;

Route::get('/articles/{article:slug}', function(Article $article) {
    return $article;
});

Kode diatas akan memiliki fungsi yang sama dengan kode yang kita gunakan untuk override method getRouteKeyName().

Kadang kita diahadapkan pada kondisi dimana kita harus mengirimkan 2 atau lebih paramter / model pada route model binding, dan mungkin kita ingin membuat sebuah cakupan / scopemodel kedua harus merupakan anak / child dari model pertama. Contohnya pada sebiuah kasus kita ingin menampilkan sebuah artikel berdasarkan slug untuk user terntentu.

use App\Article;
use App\User;

Route::get('/users/{user}/articles/{article:slug}', function (User $user, Article $article) {
    return $article;
});