作为参考,我使用了这篇文章和Laravel文档:
Laravel 5.6 getRouteKeyName() not working https://laravel.com/docs/5.8/routing#explicit-binding
在我的路线中,我有一个像这样的资源数组:
Route::resources([
...
'state' => 'StateController',
...
]);
在我的控制器中,我试图通过该插件访问模型。我的状态表和模型具有名称和子项列。
StateController
public function show(State $state)
{
dd($state);
// return view('state.show', compact('state'));
}
public function getRouteKeyName()
{
return 'slug';
}
如果我删除了State
模型类型转换,它将打印出URL的字符串indiana
:http://codebase.localhost.com/state/indiana
但是当我重新键入类型转换时,它会给我一个404。它可以找不到模型。
我认为getRouteKeyName
应该通过传递的字符串来检索模型。
有什么作用?
这是我的模特fillables
'name', 'order', 'slug'
这绝对是我桌上的记录。
答案 0 :(得分:3)
问题似乎出在控制器中定义了getRouteKeyName
方法。
从文档中:
您可以在Eloquent模型上覆盖getRouteKeyName方法
尝试将getRouteKeyName
方法移至您的State
模型中。