gpt4 book ai didi

php - 在库 api 中为每个任务或每个事务创建一个函数?

转载 作者:行者123 更新时间:2023-11-29 16:46:15 24 4
gpt4 key购买 nike

我正在我的应用程序中创建一个帖子库(就像 Facebook 帖子一样),每个帖子可以有多个与之关联的标签,用户还可以按标签查看帖子,所以我有 2 个表:-

"posts_has_tags"
post_id -> tag_id

"tag_has_posts"
tag_id -> post_id

开发人员可以使用这样的库查询帖子和标签 ->

Post $post = new Post($postId)
Tag $tag = new Tag($tagId)

然后我想添加将标签附加到帖子的函数,但现在我很困惑,因为我可以创建2个单独的函数,一个将标签添加到帖子(在帖子类中),另一个将帖子添加到标签(在标签类)例如:-第一:-

$post->addTags([$tag1, $tag2])
then
for (i = 0; i < numOfTags; i++){
$tag{i}->addPost($post)
}

所以这里开发人员(图书馆用户)将有两个功能,他们必须手动添加要发布的标签,并且还必须将该帖子添加到标签,所以如果第二次操作失败(如果这些表位于不同的机器上),他们可以回滚第一个操作,

我可以在 Post 类中提供一个函数来自动执行所有操作,例如:-

$post->addTags([$tag1, $tag2...])

那么哪种方法更好?假设我的数据库按功能分片(意味着 post_has_tags 和 tag_has_posts 表可以位于不同的机器上),因此通过第一种方法,如果第二台机器出现故障,库用户可以在应用程序级别创建分布式事务,我们可以通过removeTags()函数回滚第一个操作,在第二种情况下,这应该在库级别完成,

我想知道哪个更好?,同样适用于用户关注者,你可以在其中看到关注者和关注者,这些东西也可以在不同的机器上,抱歉英语不好,谢谢:)

最佳答案

这通常是通过一张表来完成的,其中包含类似......的内容

table: postAssciatedTags
columns: postID,
tagID,
taggedDate (optional)

主键为 postID 和 tagID(因为您只能使用相同的标签标记一次帖子)。

因此,您只需添加 1 条双向记录,您就可以查看帖子具有哪些标签或哪些帖子带有特定标签。

关于php - 在库 api 中为每个任务或每个事务创建一个函数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53098950/

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