gpt4 book ai didi

php - laravel-tagging 在数据库中创建双条目

转载 作者:行者123 更新时间:2023-11-29 05:12:40 25 4
gpt4 key购买 nike

我正在尝试设置 laravel-tagging 系统并让它在数据库中存储标签。但是,每次我提交带有标签的文章时,它都会创建两个条目:

 id    taggable_id   taggable_type    tag_name    tag_slug
'72', '128',
'73', '72', 'App\Article', 'Newtag1', 'newtag1'

第一个条目 (id=72) 具有正确的 taggable_id,第二个条目 (id=73) 由 laravel-tagging 并自动将另一个 taggable_id 设置为 72,它从零开始计数并且表现得像自动递增。但是它在数据库模式中没有自动增量设置。

我是这样设置的:

1) 我创建了一个新的模型实例:

$article = new Article;

2) 然后我分配一个 taggable_id,它是使用标签创建的帖子的 ID:

$article->taggable_id = $postid;

3) 我将 $article 保存到数据库中:

$article->save();

4) 我通过 taggable_id 在数据库中找到保存的行并将其放入一个新的 $article 中:

$article = Article::where('taggable_id', $postid)->first();

5) 我运行 laravel-taggingtag 方法将标签放入数据库:

$article->tag($request->taggone);

6) 我再次保存该行

$article->save();

这给了我开头显示的复式条目。为什么会这样?我究竟做错了什么?我只是希望它使用原始条目来存储这些标签,而不是创建一个新条目。

编辑:我尝试跳过第 4 步,结果是一样的。

EDIT2 我的 Article 模型如下所示:

namespace App;

use Conner\Tagging\Taggable;

use Illuminate\Database\Eloquent\Model;

class Article extends Model
{
use Taggable;

protected $table = 'tagging_tagged';

public $timestamps = false;
}

最佳答案

看起来问题是因为您将 Article 模型上的 $table 属性设置为 tags 表,而它应该保留文章 表。

一般的想法是,在 laravel-tagging 的大部分情况下,一切都保持不变。唯一的区别是,如果您希望某个模型(例如 Article)支持标记,您需要做的就是添加 use Conner\Tagging\Taggable; 语句到你的模型。

然后您就可以像往常一样创建文章。例如

$article = new Article();
$article->title 'Test Article';
$article->body = 'Some article body';
$article->save(); // Should save it first before trying to tag

那么如果你想给文章加标签

$article->tag('Gardening');  // This will tag this article

您不必担心设置 tagging_tagged 表上的任何列,当您使用 tag() 时,扩展程序会为您处理。

关于php - laravel-tagging 在数据库中创建双条目,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37253703/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com