Personaliza tus URLs en Laravel
¿Qué es getRouteKeyName()?
En Laravel, el método getRouteKeyName()
permite especificar qué columna de tu modelo se utilizará para la vinculación implícita de rutas. Por defecto, Laravel utiliza la columna id
, pero puedes sobrescribir este comportamiento para usar otra columna, como slug
.
¿Cómo implementarlo?
public function getRouteKeyName(): string
{
return 'slug';
}
Para usar un campo diferente al id en tus URLs, agrega el siguiente método en tu modelo Eloquent:
Con esta configuración, una URL como /posts/mi-articulo
buscará el registro con el slug
igual a mi-articulo
. Si no se encuentra, Laravel devolverá automáticamente un error 404.
¿Por qué usarlo?
URLs amigables: Mejora la legibilidad y el SEO de tus rutas.
Mejor experiencia de usuario: URLs más descriptivas y fáciles de recordar.
Flexibilidad: Permite utilizar cualquier columna única de tu modelo para la vinculación de rutas.
Consideraciones
Asegúrate de que el campo que elijas (como
slug
) sea único y adecuado para ser utilizado en una URL.Si estás utilizando Laravel 7 o superior, también puedes especificar el campo directamente en la ruta con la sintaxis
{model:slug}
.