为新闻管理创建一个类别和子类别系统

时间:2016-12-17 11:20:38

标签: php mysql laravel laravel-5

我正在创建一个新闻网站,并且在新闻网站上将有一个类别和子类别管理,我已经创建了表格,也可以管理类别和子类别,唯一的问题是关于我如何将帖子与类别关联我的创建帖子,我应该在我的表格中创建"帖子"创建2列," category_id"和" subcategory_id" ?它看起来不太正确,因为只有通过给出其中一个我应该已经没有一个是catgory和subategory,如果我的类别和子类别列只有一个,我就不会,但在我的情况下它不是。我觉得我如何为帖子,类别和子类别创建我的表格并不是多么可能,在这里我留下我的代码:

define( 'CONCATENATE_SCRIPTS', false );

那么我应该如何将类别或子类别与帖子联系起来呢?这是我正确的做法吗?

3 个答案:

答案 0 :(得分:2)

我可以为类别使用自我父母关系。这可以让您创建一个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

答案 1 :(得分:1)

您可以在Posts表中指定sub_category_id的外键。 表格模式如

文章: -ID; - 标题; - 身体; - sub_category_id

类别: - ID; - 名字;

Category_Subcategory: - ID; - 名称; - category_id;

答案 2 :(得分:0)

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

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

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