Laravel 8 资源控制器未获取模型
Laravel 8 resource controller not fetching model
在 Laravel 7 中获取模型非常简单,我只需要设置 mi 资源路由并获取地址:
http:///localhost/test/public/employee/1
但我无法让它在 Laravel 8 上运行,根据我的理解,我只需要这样做:
public function show(Employee $employee)
{
dd($employee);
}
但是 dd 只有 returns 一个空 class:
如果我这样做:
public function show(Employee $employee)
{
dd(Employee::find(1));
}
dd returns 正确数据:
Route::resources([
'employee' => EmployeeController::class,
]);
有人可以帮我看看我错过了什么吗?
此致...
您的路线必须具有与
相同的变量
Route::get('/employee/{employee}', 'EmployeeController@show');
并确保您已为此路由启用绑定中间件。 ->middleware(['bindings']);
正在更新资源路由:
Route::resource('/employee', 'EmployeeController')->middleware('bindings');
Route::resource('employee', EmployeeController::class);
https://laravel.com/docs/8.x/controllers#resource-controllers
问题是我用西班牙语命名路线:
Route::apiResource('empleados', EmployeeController::class);
因此 Laravel 期望接收封装在西班牙语动词 class 中的模型(empleados 而不是 employee),所以我需要重命名方法控制器中的参数以接收正确型号:
public function show(Employee $empleado)
{
return $empleado;
}
在 Laravel 7 中获取模型非常简单,我只需要设置 mi 资源路由并获取地址:
http:///localhost/test/public/employee/1
但我无法让它在 Laravel 8 上运行,根据我的理解,我只需要这样做:
public function show(Employee $employee)
{
dd($employee);
}
但是 dd 只有 returns 一个空 class:
如果我这样做:
public function show(Employee $employee)
{
dd(Employee::find(1));
}
dd returns 正确数据:
Route::resources([
'employee' => EmployeeController::class,
]);
有人可以帮我看看我错过了什么吗?
此致...
您的路线必须具有与
相同的变量Route::get('/employee/{employee}', 'EmployeeController@show');
并确保您已为此路由启用绑定中间件。 ->middleware(['bindings']);
正在更新资源路由:
Route::resource('/employee', 'EmployeeController')->middleware('bindings');
Route::resource('employee', EmployeeController::class);
https://laravel.com/docs/8.x/controllers#resource-controllers
问题是我用西班牙语命名路线:
Route::apiResource('empleados', EmployeeController::class);
因此 Laravel 期望接收封装在西班牙语动词 class 中的模型(empleados 而不是 employee),所以我需要重命名方法控制器中的参数以接收正确型号:
public function show(Employee $empleado)
{
return $empleado;
}