作为参考,我使用了这篇文章和 Laravel 文档:
Laravel 5.6 getRouteKeyName() 不起作用 https://laravel.com/docs/5.8/routing#explicit-binding
在我的路线中,我有一个这样的资源数组:
Route::resources([
...
'state' => 'StateController',
...
]);
在我的控制器中,我试图通过 slug 访问模型。我的状态表和模型有 name 和 slug 列。
StateController
public function show(State $state)
{
dd($state);
// return view('state.show', compact('state'));
}
public function getRouteKeyName()
{
return 'slug';
}
如果我删除State
模型类型转换,它会打印出indiana
url的字符串:http://codebase.localhost.com/state/indiana
但是当我重新输入类型转换时,它给了我一个 404。它找不到模型。
我认为getRouteKeyName
应该通过传递的字符串来检索模型。
是什么赋予了?
这是我的模型 fillables
'name', 'order', 'slug'
这绝对是我表中的记录。
看起来问题出getRouteKeyName
在控制器中定义的方法上。从文档:
您可以覆盖 Eloquent 模型上的 getRouteKeyName 方法
尝试将getRouteKeyName
方法移动到您的State
模型中。
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句