Laravel 5.8-使用getRouteKeyName()插件获取模型不起作用

时间:2019-05-01 20:47:42

标签: php laravel routing

作为参考,我使用了这篇文章和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的字符串indianahttp://codebase.localhost.com/state/indiana但是当我重新键入类型转换时,它会给我一个404。它可以找不到模型。

我认为getRouteKeyName应该通过传递的字符串来检索模型。

有什么作用?

这是我的模特fillables

'name', 'order', 'slug'

这绝对是我桌上的记录。

enter image description here

1 个答案:

答案 0 :(得分:3)

问题似乎出在控制器中定义了getRouteKeyName方法。 从文档中:

  

您可以在Eloquent模型上覆盖getRouteKeyName方法

尝试将getRouteKeyName方法移至您的State模型中。