Buscar..


Vinculación implícita

Laravel resuelve automáticamente los modelos elocuentes definidos en rutas o acciones de controlador cuyos nombres de variable coinciden con un nombre de segmento de ruta. Por ejemplo:

Route::get('api/users/{user}', function (App\User $user) {
    return $user->email; 
});

En este ejemplo, dado que la variable de usuario Eloquent $ definida en la ruta coincide con el segmento {usuario} en el URI de la ruta, Laravel inyectará automáticamente la instancia del modelo que tiene una ID que coincide con el valor correspondiente del URI de solicitud. Si no se encuentra una instancia de modelo coincidente en la base de datos, se generará automáticamente una respuesta HTTP 404.

Si el nombre de la tabla del modelo se compone de varias palabras, para hacer que el enlace implícito del modelo funcione, la variable de entrada debe estar en minúsculas;
Por ejemplo, si el usuario puede realizar algún tipo de acción y queremos acceder a esta acción, la ruta será:

Route::get('api/useractions/{useraction}', function (App\UserAction $useraction) {
    return $useraction->description; 
});

Vinculación explícita

Para registrar un enlace explícito, use el método de modelo del enrutador para especificar la clase para un parámetro dado. Debe definir sus enlaces de modelo explícitos en el método de arranque de la clase RouteServiceProvider

public function boot()
{
   parent::boot();

   Route::model('user', App\User::class);
}

A continuación, podemos definir una ruta que contiene el parámetro {usuario}.

$router->get('profile/{user}', function(App\User $user) {
  
});

Como hemos vinculado todos {user} parámetros de {user} al modelo App\User , se inyectará una instancia de User en la ruta. Entonces, por ejemplo, una solicitud de profile/1 inyectará la instancia de Usuario de la base de datos que tiene un ID de 1 .

Si no se encuentra una instancia de modelo coincidente en la base de datos, se generará automáticamente una respuesta HTTP 404 .



Modified text is an extract of the original Stack Overflow Documentation
Licenciado bajo CC BY-SA 3.0
No afiliado a Stack Overflow