基于 id 字段查询数据库但在 URL 中传递标题 Laravel

Querying DB based on id field but passing title in URL in Laravel

这是我正在尝试做的事情。

我有一个定义的路线

Route::get('/{id}', [
'uses' => 'questionsController@show'
]);

基本上我是在我的问题模型中使用 Id 搜索记录。

在问题控制器中,显示方法的代码是

public function show($id)
{
    $question = questions::find($id);
    return view ('show', compact('question'));
}

在另一个视图中,我有以下代码

<a href = "/questions/"{{ $questions--> id }}> {{ $question->title }}</a>

基本上我用页面的 id 标记标题以确保当有人点击 link 他们被重定向 /questions/id 这是查询id的地方

如何将锚标记替换为问题的标题,以便 URL 变为 /questions/How我会游泳吗

但模型是根据 id 查询的(因为 id 是主键)?

也许试试

<a href="/questions/{{ $question->id }}">{{ $question->title }}</a>

这样做你的 url 变成 /questions/ID_OF_QUESTION 如果你想要它使用 /questions/title-of-the-question 不同之处在于你需要改变你查询问题的方式。使用 slug 来识别问题,因为 "How do I swing" 它没有正确 URL 解析,并且可能两个用户提出了相同的问题。

使用路由 /questions/id/title-of-the-question,但请注意,id 后面的文本无关紧要

你想要的是 url 鼻涕虫,the part of a URL which identifies a page using human-readable keywords

有一个名为 'Eloquent-Sluggable' 的 Laravel 插件专门用于解决此问题。您可以在 https://github.com/cviebrock/eloquent-sluggable

找到它

文档很好;你应该会发现它很容易实现。