【问题标题】:Laravel 5.8 - Fetching models using getRouteKeyName() slug not workingLaravel 5.8 - 使用 getRouteKeyName() slug 获取模型不起作用
【发布时间】:2019-09-20 09:22:01
【问题描述】:

作为参考,我使用了这篇文章和 Laravel 文档:

Laravel 5.6 getRouteKeyName() not working 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 模型类型转换,它会为 url 打印出字符串 indiana:http://codebase.localhost.com/state/indiana 但是当我重新输入类型转换时,它会给我一个 404。它找不到模型。

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

什么给了?

这是我的模特fillables

'name', 'order', 'slug'

这绝对是我表中的记录。

【问题讨论】:

  • getRouteKeyName 不是应该在模型中(不是上图的控制器)吗?

标签: php laravel routing


【解决方案1】:

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

你可以覆盖 Eloquent 模型的 getRouteKeyName 方法

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

【讨论】:

  • 我完全错过了。非常感谢
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2020-09-14
  • 1970-01-01
  • 2020-12-13
  • 2020-02-19
  • 1970-01-01
  • 1970-01-01
  • 2020-12-14
相关资源
最近更新 更多