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

懒龟

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

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

是什么赋予了?

这是我的模型 fillables

'name', 'order', 'slug'

这绝对是我表中的记录。

在此处输入图片说明

布莱恩

看起来问题出getRouteKeyName在控制器中定义方法上。从文档:

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

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

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章