我有一种情况,我有实体,基地,可以包含成分,饮料和基地本身。我知道如何与成分和饮料建立关系,但是当谈到基地内的基地时,我不知道该怎么做。任何帮助,将不胜感激。我不能使用带有parent_id的解决方案,因为一个基础可以属于其他几个基础,并且不希望在基表中重复。我需要一些带有数据透视表的解决方案。
答案 0 :(得分:2)
假设parent_id
表中有bases
class Base extends Model
{
public function children()
{
return $this->hasMany(Base::class,'parent_id','id');
}
public function parent()
{
return $this->belongsTo(Base::class,'id','parent_id');
}
}
然后你可以像这样轻松访问基地的基础
foreach($base->children() as $childBase){
$childBase->ingredients();
$childBase->drinks();
}
答案 1 :(得分:0)
最后我找到了解决方案,自引用实体可以通过自身与多对多关系来完成。
模型关系如下所示:
class BaseDrink extends Model {
public function drinkbase(){
return $this
->belongsToMany('App\BaseDrink', 'basedrink_basedrink','basedrink_id', 'parent_basedrink_id')
->withPivot('created_by')
->withPivot('last_modified_by')
->withPivot('id')
->withTimestamps();
}
}