Laravel nos permite obtener modelos directamente en los parámetros de nuestras acciones, sin necesidad del llamado explícito a métodos de Eloquent como find or findOrFail, en esta lección veremos el uso de esta característica conocida como Route Model Binding:

Repositorio

Ver el código de esta lección en GitHub

Suscríbete a nuestro boletín

Te enviaremos publicaciones con consejos útiles y múltiples recursos para que sigas aprendiendo.

Notas

En lugar de obtener el usuario utilizando los métodos find o findOrFail podemos obtenerlo directamente como parámetro de la acción:

public function show(User $user)
{
    return view('users.show', compact('user'));
}

Para que esto funcione, nota que el nombre del parámetro en la declaración de la ruta debe coincidir con el nombre del parámetro en la declaración del método:

Route::get('/usuarios/{user}', 'UserController@show');

// y en el controlador:

use App\User;

class UserController {

    public function show(User $user)
    {
        //...
    }

}

Además el tipo del parámetro debe ser, por supuesto, un modelo de Eloquent (en nuestro ejemplo es App\User).

Material Relacionado

Puedes ver más detalles de este feature en el videotutorial: Asociar rutas a modelos de Eloquent con Implicit Route Binding.

Puedes aprender más sobre desarrollo con Laravel y TDD en el Curso: crea una aplicación con Laravel

Únete a nuestra comunidad en Discord y comparte con los usuarios y autores de Styde, 100% gratis.

Únete hoy

Regístrate hoy en Styde y obtén acceso a todo nuestro contenido.

Lección anterior Manejo de errores 404 en Laravel Lección siguiente Rutas con POST y protección contra ataques de tipo CSRF en Laravel