4张桌子之间的关系

时间:2019-05-12 06:33:21

标签: php laravel

我有4张桌子赛事,组,类别,柔道。活动有很多小组,小组有很多类别,类别有很多柔道。那么我怎么能意识到这一点呢?我尝试创建数据透视表event_group,group_category,category_judoka,但是当我将judokas归类时,它们在所有事件中都不仅存在于一个事件中。我在所有表之间有许多关系。有什么建议么?

3 个答案:

答案 0 :(得分:0)

您必须定义关系的反向关系,以便我们知道如何最好地回答这个问题,但这就是您可以做的,您只需要在它们之间建立1对n的关系即可: 在您的事件模型中:

public function group(){
return $this->hasMany(Group::class);
}

以及您的组模型中:

 public function category(){
    return $this->hasMany(Category::class);
    }

以及您的类别模型中:

public function judokas(){
        return $this->hasMany(Judokas::class);
}

,并考虑在相关表中放置一个modelname_id,例如,在事件模型中,您需要一列:

group_id

在您的组模型中,您需要一列:

category_id

,在“类别”模型中,您需要一列:

jukodas_id

现在您可以按嵌套关系访问所有关系,例如,在控制器中,您可以使用如下所示的w:

 $data = Event::with('Group', 'category.judokas');

在这里您可以获取嵌套关系,即judokas内部的类别关系。 希望对您有帮助

答案 1 :(得分:0)

您的问题不清楚,但 根据您的描述,您应该具有这种关系:

  1. 事件有很多类别
  2. 事件有很多柔道
  3. 团体有很多柔道

当您将judoka添加到类别中时,您应该同步此关系:

category->events()->judokas()
category->groups()->judokas()

并像这样访问它们:

event->judokas()
group->judokas()

答案 2 :(得分:0)

谢谢大家,我找到了解决方案。刚创建的数据透视表具有3个值category_id,event_id和judoka_id。附加值如下:$categoryf->events()->attach($categoryf->id, ['event_id' => $event->id, 'judoka_id' => $judokas->id]);