如何在PHP中为单个帖子分配多个类别?

时间:2012-09-15 13:42:28

标签: php mysql

我目前正在开发自定义cms,用户可以将多个类别分配到单个帖子中。我的问题是:

  1. 这是什么样的mysql表架构?
  2. 如何在博客帖子表中存储多个选定的类别?
  3. 如果您有澄清,请告诉我。

5 个答案:

答案 0 :(得分:3)

  1. 你在这里有多对多的关系。存储关系的标准方法是使用类别和帖子的连接表。该表只有类别ID和post id。

  2. 邮政表中没有关于类别本身的信息。

答案 1 :(得分:1)

  1.   

    这是什么样的mysql表架构?

    一种方法是创建关系表:

    CREATE TABLE cms.Posts (
      PostID       SERIAL,
      PostContent  TEXT,
      PRIMARY KEY (PostID)
    ) Engine=InnoDB;
    
    CREATE TABLE cms.Categories (
      CategoryID   SERIAL,
      CategoryName VARCHAR(20),
      PRIMARY KEY (CategoryID)
    ) Engine=InnoDB;
    
    CREATE TABLE cms.PostCategories (
      PostID BIGINT UNSIGNED NOT NULL,
      CategoryID BIGINT UNSIGNED NOT NULL,
      PRIMARY KEY (PostID, CategoryID),
      FOREIGN KEY (PostID)     REFERENCES cms.Posts      (PostID),
      FOREIGN KEY (CategoryID) REFERENCES cms.Categories (CategoryID)
    ) Engine=InnoDB;
    
  2.   

    如何在博客帖子表中存储多个选定的类别?

    您没有,将它们存储在PostCategories表中:

     
    $dbh = new PDO('mysql:charset=utf8', $username, $password);
    $dbh->setAttribute(PDO::ATTR_EMULATE_PREPARES, false);
    
    $dbh->prepare('INSERT INTO cms.Posts (PostContent) VALUES (?)')
        ->execute([$_POST['content']]);
    
    $qry = $dbh->prepare('
      INSERT INTO cms.PostCategories (PostID, CategoryID) VALUES (?, ?)
    ');
    
    $qry->bindValue(1, $dbh->lastInsertId());
    $qry->bindParam(2, $category);
    foreach ($_POST['categories'] as $category) $qry->execute();
    

答案 2 :(得分:0)

每个人(包括我自己)似乎都在使用的解决方案是@rwilliams所描述的。当查询仅限于单个标记时,这些工作正常。要查询2个标签(标记为个人标签并标记为旅行),您需要使用连接。当查询变得更复杂时,这开始崩溃。我认为MongoDB是一个更好的解决方案。

答案 3 :(得分:0)

对于多对多关系,您可以将表设计为

caegory table
    categoryId categorydescription

post table    
    postid     postText

a third table to link them    
    categoryId  postId

答案 4 :(得分:0)

blog_posts
==========
id | 23
title | My title

categories
==========
id | 1
name | yogurt
// another row
id | 2
name | motor cycles

category_blog_post
==================
23 | 2
23 | 1

显示博客文章我的标题被标记为关于酸奶和摩托车的条目