Laravel中单个表的数据透视表

时间:2019-05-13 06:30:18

标签: mysql laravel pivot-table

我正在尝试在我的网站中添加一个多层次的类别。其中一个类别可以有多个孩子,也可以有多个父母。在Laravel中看起来像是多对多关系,我必须使用数据透视表。

因此我创建了一个名为 categories 的表以及一个枢纽表 categories_reltionship ,如下所示。现在我的问题是我将如何与Laravel中的单个表建立这种多对多的关系。

categories table
==================
id    title
===   ======
1     title_1
2     title_2
3     title_3
4     title_4
5     title_5
categories_relationship table
==================
parent_id    child_id
==========   ======
1            2
1            3
4            2
4            3
5            2
5            3

2 个答案:

答案 0 :(得分:1)

您可以在<FilePond acceptedFileTypes={['image/png']} fileValidateTypeDetectType={ (source, type) => new Promise((resolve, reject) => { // Do custom type detection here and return with promise resolve(type); }) } /> 模型上使用类似下面的方法:

Category

//This will get you the list of categories public function categories() { return ($this->hasManyThrough('App\Models\Category', 'App\Models\CategoryRelation', 'child_id', 'id', 'id', 'parent_id')); } //This will get you the list of children public function childs() { return ($this->hasManyThrough('App\Models\Category', 'App\Models\CategoryRelation', 'parent_id', 'id', 'id', 'child_id')); } 模型上:

CategoryRelation

我希望这可以帮助您解决问题

注意:我建议您为many to many关系建立3个表,

答案 1 :(得分:0)

在多对多关系中,您应该有三个表。希望以下示例对您有所帮助。 在上述方案中,我们有三个表,分别具有user,role和支点名称,每个用户可以有多个角色,并且每个角色都独立于许多用户。

user table have my_user_id(optional name) and other need column.
role table to have my_role_id (optional name) and other.
pivot table includes my_user_id , my_role_id.

用户模型中,您的代码应如下所示:

class User extends Model
{
    public function roles()
      {
         return $this->belongsToMany('App\Role', 'pivot', 'my_user_id', 'my_role_id');
      }
}

角色模型中,您的代码应如下所示:

class Role extends Model
{
    public function users()
      {
         return $this->belongsToMany('App\User', 'pivot', 'my_role_id', 'my_user_id');
      }
}

您还可以参考laravel官方文档: many to many relationships