路由模型绑定
当向路由或控制器行为注入模型 ID 时,就需要查询这个 ID 对应的模型。Laravel 为路由模型绑定提供了一个直接自动将模型实例注入到路由中的方法。例如,你可以注入与给定 ID 匹配的整个 User
模型实例,而不是注入用户的 ID。
隐式绑定
Laravel 会自动解析定义在路由或控制器行为中与类型提示的变量名匹配的路由段名称的 Eloquent 模型。例如:
Route::get(‘api/users/{user}‘, function (App\User $user) {
return $user->email;
});
在这个例子中,由于 $user
变量被类型提示为 Eloquent 模型 App\User
,变量名称又与 URI 中的 {user}
匹配,因此,Laravel 会自动注入与请求 URI 中传入的 ID 匹配的用户模型实例。如果在数据库中找不到对应的模型实例,将会自动生成 404 异常。
自定义键名
如果你想要模型绑定在检索给定的模型类时使用除 id
之外的数据库字段,你可以在 Eloquent 模型上重写 getRouteKeyName
方法:
/**
* 获取该模型的路由的自定义键名。
*
* @return string
*/
public function getRouteKeyName()
{
return ‘slug‘;
}