Laravel 更改 URL 姓名详细信息

Laravel Change URL name detail

如何使 post 单一 URL 像 myweb.com/post-name 而不是 myweb.com/post-id ?它适用于 posts id,但不适用于 post 名称。

这是我当前的路线。

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

然后:

public function show($id) // $id = 25
{
    $post = post::find($id); // find() search for the PK column, "id" by default

    return view('detail', ['post' => $post]);
}

如果您想通过不同的字段解析 $post,请执行以下操作:

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

    return view('detail', ['post' => $post]);
}

这应该适用于这样的路线:

myweb.com/a-cool-post-name

附带说明一下,您可以使用 Route Model Binding.

自动解析模型