定义对象图层


Define Object Laravel

我有一个页面,里面有很多文章。我想让用户能够"点赞"一篇文章,并将这个点赞id存储到数据库中,以便以后重用。我是Laravel和Php的新手,所以这里是我所拥有的。

我有文章之类的模型。我在公共存储ArticleController中有这个。

public function store()
{
    $article = new Article();
    $article->body = 'new article body';
    $article->title = 'new article Title';
    $article->type = 'fashion';
    $article->save();
    $request = Request::all();
    $likes = new Like();
    $likes->user_id = Auth::user()->id;
    $likes->article_id = $article->id;
    $likes->save();
    return redirect('article');

}

我遵循了laravel基础教程,但我认为我错过了一些东西。这对我来说很有用。但是现在我想改变它,这样它只需要现有的文章,而不做一个新的。当我改变它来反映这个:

$article = Article::find($id);

它告诉我$id没有定义。那么我如何让$id指向用户想要"喜欢"的文章呢?

问题是So how do i make $id point to the article the user wants to 'like'?

这是一个相当大/广泛的问题,但我会试着总结一下。首先你需要一个路由,例如:
Route::get('article/like/{id}', 'ArticleController@like');

然后在ArticleController中声明like方法,例如:

public function like($id)
{
    // Now you can use $id
}

为了澄清您,路由中的{id}将从URI中获取本文的id,因此您可以使用URI如下所示:

http://example.com/article/like/10 // Here 10 is the article id

所以这是一个想法,现在实现它并修改URI或任何你需要使它适合你的项目,但请记住,如果你想传递一个id到你的URI,然后你必须使用一个路由参数(即:{id}在这种情况下),当声明路由和你的方法应该接收参数使用方法头,即:public function like($id)