为什么模型不通过子弹返回数据,除了id?

问题描述 投票:0回答:2

当我尝试通过子弹而不是通过ID获取数据时,laravel视图存在问题。这是我的路线:

Route::get('post/{post}','PostController@post')->name('post');

这是postController函数:

public function post(post $post)
{
    return view('user.post',compact('post'));
}

这是模型功能:

public function grtRouteKeyName()
{
    return 'slug';
}

收到错误404,但在Route中做一些更改时:

Route::get('post/{slug}','PostController@post')->name('post');

它返回视图,但不返回我要从表中获得的数据。

laravel slug laravel-6
2个回答
1
投票

Laravel的implicit-binding简介

如果/ {post}包含一个ID,并且您的表具有ID列,那么Laravel会处理它。

如果您希望模型绑定在检索给定模型类时使用id以外的数据库列,则可以在Eloquent模型上重写getRouteKeyName方法:

public function getRouteKeyName()
{
    return 'slug';  // db column name
}

在上述问题中,您需要将方法名称grtRouteKeyName纠正为getRouteKeyName拼写,希望它能起作用。


0
投票

您拼错了getRouteKeyName()

© www.soinside.com 2019 - 2024. All rights reserved.