如何设置数据库关系,以便类别可能属于多个父类别

时间:2015-05-14 09:45:51

标签: php eloquent laravel-5

我目前正在使用Laravel(PHP框架)来构建电子商务网站。

该网站将有很多类别(对于产品),其中有100-150,并且可能会更多,因为将有一个后端网站添加更多。

有时,某个类别必须出现在网站上的多个父类别中。

我想要实现的类别关系:

  • 类别可以包含多个子类别。
  • 某个类别可能包含多个父类别。

我对如何在Laravel中正确设置这两种关系中的第二种感到困惑。

所以我的问题是:

如何设置数据库结构和模型关系,以便类别可以属于许多其他类别而不会在类别表中重复。

我想知道我需要哪些表格/列,以及需要在模型中设置哪些类型的关系。

这个模型似乎有效:

我有一个名为category_category和relation:

的表
  public function parentCategories()
  {
    return $this->belongsToMany('TottonTimber\Category', 'category_category', 'category_id', 'parent_id');
  }

  public function childCategories()
  {
    return $this->belongsToMany('TottonTimber\Category', 'category_category', 'parent_id', 'category_id');
  }

然而,这似乎不是正确的做法,因为两者都是“belongsTo”

1 个答案:

答案 0 :(得分:0)

在很多人与关系中。两种模型都与另一种模型有关系。例如,在经典的User&角色Scenerio,用户属于许多角色&角色属于许多用户..所以当你看到'属于'关系双方。在这里,因为你的关系的两端都有相同的模型,你必须把'属于''对于你的关系定义。这似乎完全没问题。