Laravel: Mengganti id dengan slug di Url Resource

Penggunaan Route:resource() di dalam laravel dapat menyingkat waktu dan menyederhanakan kodingan aplikasi. Namun bagaimana caranya agar kita bisa menggunakan slug di dalam url untuk mengganti id? Nah pada artikel ini akan membahas caranya yang sangat mudah. Namun, sebelum itu, mari kita basa-basi terlebih dahulu.

Memahami Penggunakan Route:resource()

Setiap kita menggunakan Route:resource() maka akan secara otomatis membuat route atau url sebanyak 7. Contoh saat kita membuat route user seperti dibawah ini maka akan menghasilkan 7 url/route.

Route:resource('user', UserController::class);
Route/UrlMethodParammeter URLFungsi
/userGETTidak adaindex()
/user/createGETTidak Adacreate()
/userPOSTTidak Adapost()
/user/{user}GETUser IDshow()
/user/{user}/editGETUser IDedit()
/user/{user}PUT/PATCHUser IDupdate()
/user/{user}DELETEUser IDdestroy()
Pada contoh di atas, jika kita ingin menampilkan user dengan id 25 maka url yang diakses adalah /user/25. Perhatikan bagian Route/Url yang saya beri warna, di situ masing-masing diganti dengan User ID. Lalu bagaimana agar kita bisa mengganti id dengan slug?

Mengganti ID dengan Slug

Sebagai contoh, kita ingin mengakses url detail user menggunakan slug seperti berikut: /user/slug-nama-user dan tidak lagi menggunakan id /user/25. Caranya cukup mudah yaitu dengan menambahkan fungsi getRouteKeyName() pada model User. Perhatikan contoh kode di bawah ini:

public function getRouteKeyName()
    {
        return 'slug';
    }
Photo of author

Ahmad Budairi

Ahmad Budairi, S.Pd. | Seorang Web Developer sekaligus kader Gerakan Pemuda Ansor yang sangat suka menulis artikel. Saya di sini akan lebih banyak menulis seputar Laravel, vue, vuetify, inertiajs, dan hal lain yang berhubungan dengan web development.Kontak: budairi.contact[et]gmail[dot]com