我有4张桌子赛事,组,类别,柔道。活动有很多小组,小组有很多类别,类别有很多柔道。那么我怎么能意识到这一点呢?我尝试创建数据透视表event_group,group_category,category_judoka,但是当我将judokas归类时,它们在所有事件中都不仅存在于一个事件中。我在所有表之间有许多关系。有什么建议么?
答案 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)
您的问题不清楚,但 根据您的描述,您应该具有这种关系:
当您将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]);