【问题标题】:Creating a category and subcategory system to news management为新闻管理创建类别和子类别系统
【发布时间】:2017-05-03 01:18:40
【问题描述】:

我正在创建一个新闻网站,并且在新闻网站中将有一个类别和子类别管理,我已经创建了表格并且还可以管理类别和子类别,唯一的问题是我将如何将帖子与类别相关联我的创建帖子,我应该在我的表“帖子”中创建 2 列,“category_id”和“subcategory_id”吗?它看起来不太正确,因为仅通过提供其中一个我应该已经没有一个是类别和子类别,如果我的类别和子类别列只有一个,我不会,但在我的情况下它不是。我觉得我为帖子、类别和子类别创建表格的方式并不完美,这里我留下我的代码:

Posts:´
-id;
- title;
- body;

Categories:
- id;
- name;

Category_Subcategory:
- id;
- name;
- category_id;

那么我应该如何将类别或子类别与帖子相关联?这是我做的正确方法吗?

【问题讨论】:

    标签: php mysql laravel laravel-5


    【解决方案1】:

    我可以对类别使用自养关系。这可以让您创建 n 级类别(您可以在源代码中进行限制)

    Categories:
     - id
     - name
     - parent_id (FK to Categories.id, Null if is a root category)
    
    Posts:
     - id
     - title
     - content
     - category_id
    

    所以,例如:

    Category [#1, 'Financial', NULL] = Root category Financial
    Category [#2, 'Crisis', 1] = Sub-category linked to Financial one
    

    您还有另一种解决方案:多对多多态关系 您可以创建一个与类别的关系帖子和另一个与子类别的帖子

    https://laravel.com/docs/5.3/eloquent-relationships#many-to-many-polymorphic-relations

    【讨论】:

      【解决方案2】:

      您可以在 Posts 表中分配 sub_category_id 的外键。 类似的表架构

      帖子: -ID; - 标题; - 身体; - sub_category_id

      分类: - ID; - 姓名;

      类别_子类别: - ID; - 姓名; - category_id;

      【讨论】:

        【解决方案3】:

        如果帖子只有一个类别和一个子类别,您可以使用此结构。您需要将sub_category_id 键添加到posts 表中。

        类别将有许多子类别 - 它是 hasMany() 关系 子类别会有很多帖子 - 也是hasMany()

        如果要获取某个类别的所有帖子,可以在类别和帖子之间添加HasManyThrough() 关系。

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 2021-03-29
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2012-06-23
          • 1970-01-01
          相关资源
          最近更新 更多