如何更新数据透视表上的标记Laravel

时间:2017-06-10 18:02:16

标签: laravel

我想编辑一篇文章,为此我在我的控制器上有一个update()方法,问题是我可以更新文章的标题,正文日期没有任何问题,但文章标签我无法以正确的方式更新它们。

当我更新并选择一些新文章时,我希望删除旧文章并使用新选择的文章进行更新,但是当我尝试下面的代码时,我会将新旧标签放在一起。注意我有一个名为article_tags的数据透视表。

我的控制器上的更新方法:

public function update(Article $articles,  ArticleRequest $request)
{
    //update the article
    $articles->update($request->all());

    //attach new tags to the article 
    $articles->tags()->attach($request->input('tag_list'));

    return redirect('articles');
}

注意tags() manyToMany()模型上的Tag关系。我知道如何以正确的方式更新标签,用新标签删除旧标签?!

1 个答案:

答案 0 :(得分:1)

你需要同步,所以试试这个

public function update(Article $articles,  ArticleRequest $request)
{
    //update the article
    $articles->update($request->all());

    //attach new tags to the article 
    $articles->tags()->sync($request->input('tag_list'));

    return redirect('articles');
}