Php Laravel更改URL名称详细信息

Php Laravel更改URL名称详细信息,php,laravel,eloquent,laravel-8,Php,Laravel,Eloquent,Laravel 8,如何使post成为一个URL,比如myweb.com/post-name,而不是myweb.com/post-id?它可以很好地处理posts id,但不能处理post name 这是我目前的路线 Route::get('/{id}', [App\http\Controllers\PostController::class, 'show']); 这是我的控制器 public function show($id) { $post = post::find($id); return

如何使post成为一个URL,比如myweb.com/post-name,而不是myweb.com/post-id?它可以很好地处理posts id,但不能处理post name

这是我目前的路线

Route::get('/{id}', [App\http\Controllers\PostController::class, 'show']);
这是我的控制器

public function show($id)
{
    $post = post::find($id);
    return view('detail', ['post' => $post]);
}

谢谢。

这是因为您使用$id作为标识符来解析post对象:

myweb.com/25
然后:

如果要通过其他字段解析$post,请执行以下操作:

public function show($name)
{
    $post = post::where('name', $name)->first();

    return view('detail', ['post' => $post]);
}
这适用于以下路线:

myweb.com/a-cool-post-name

作为补充说明,您可以使用。

将route and controller中的id更改为name来自动解析模型,以便按名称查询记录。路由::获取“/{name}”,[App\http\Controllers\PostController::类,'show'];公共函数show$name{$post=post::where'name',$name->first;返回视图'detail',['post'=>$post];}
myweb.com/a-cool-post-name