基于id字段查询DB,但在Laravel中传递URL中的标题

时间:2015-08-13 02:03:29

标签: php laravel-5.1

这就是我想要做的事情。

我有一个已定义的路线

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

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

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

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

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

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

基本上我是锚点标题标题与页面的ID,以确保当有人点击链接时,他们被重定向/ questions / id 这是查询id的地方。

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

然后根据id查询模型(因为id是主键)?

2 个答案:

答案 0 :(得分:1)

你想要的是一个url slug,the part of a URL which identifies a page using human-readable keywords

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

找到它

文档非常好;你会发现它很容易实现。

答案 1 :(得分:0)

也许尝试用

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

如果您希望使用/ questions / title-of-the-question,那么您的网址就会变成/ questions / ID_OF_QUESTION,这就是您需要更改查询问题的方式。使用slugs来识别问题,因为“我如何摆动”它没有正确的URL解析,也许两个用户提出相同的问题。

或者

使用route / questions / id / title-of-question,但请注意id之后的文字将是不明显的