¿Qué es la vinculación del modelo de ruta? ¡Me alegra que lo hayas preguntado! Eso es exactamente lo que veremos en esta publicación. Hasta ahora hemos estado experimentando con varias características del marco de Laravel mientras creamos una aplicación simple que nos permite realizar un seguimiento de los juegos en una base de datos. Hemos creado dos rutas hasta ahora, y una de ellas acepta una identificación para que podamos obtener un juego específico de nuestra base de datos. Con la vinculación del modelo de ruta, vamos a hacer de este paso un proceso automatizado. Vamos a ver cómo funciona.


El controlador de juegos actual

En este punto, estamos listos para usar un controlador de juegos dedicado, que a su vez hace uso de un modelo de juego para encontrar datos en la base de datos. Preste especial atención al show()método siguiente.

Tenga en cuenta que tenemos que pasar un $ id del juego que estamos buscando encontrar. En nuestro archivo de rutas, esta ruta Route :: get ('games / {id}', 'GamesController @ show'); hace uso de ese comodín {id}. Entonces, si alguien ingresa en /games/3el navegador, {id}se captura como el número 3. Ese número se acepta en el método show ($ id), y el juego que queremos se encuentra usando Game :: find ($ id);


Mover a la vinculación del modelo de ruta

Para simplificar este proceso de búsqueda de juegos, podemos utilizar la vinculación del modelo de ruta. Route Model Binding usa la inyección de dependencia para encontrar automáticamente el juego que estamos buscando.

Cambie el show()método de esto:

A esto:

Podemos eliminar toda esta línea de código $ game = Game :: find ($ id); y simplemente coloque la palabra Juego delante de $ id así: show (Game $ id) . Este es un ejemplo del uso de algo llamado Sugerencia de tipo. Estamos pasando un $ id, pero estamos insinuando el hecho de que queremos que sea una instancia de un modelo de juego. Cuando volvemos y probamos las cosas, parece que todo sigue funcionando como antes. ¡Frio!
2017-04-05_18-57-58

Es importante tener en cuenta que el nombre comodín en el archivo de rutas debe coincidir exactamente con el tipo de variable sugerida que se pasa a la función en el controlador. En nuestro caso, / games / {id} corresponde a show (Game $ id ) . Si hubiéramos intentado hacer algo como show (Game $ game ) en su lugar, el enlace del modelo de ruta no funcionaría.

De forma predeterminada, Laravel utiliza una clave principal para encontrar el registro cuando utiliza el enlace del modelo de ruta. Si necesita personalizar esto para que funcione con algo como encontrar por una babosa, esto es posible personalizando el nombre de la clave en el modelo de Juego.


Resumen de enlace del modelo de ruta

En este tutorial rápido, tuvimos una introducción al enlace del modelo de ruta en Laravel. Vimos que es una forma de simplificar aún más la búsqueda de registros específicos en la base de datos, lo que nos permite eliminar una consulta manual del show()método en nuestro controlador.