2017-01-30 289 views
0
加入3个表

所以我有3个表使用Laravel雄辩

size_sets - id, name 
sizes - id, name 
size_set_sizes - size_id, size_set_id 

我要定义size_set模型的关系,将检索所有sizes用于该sizeset

喜欢的东西:

public function sizes() 
    { 
     //define relationship here 
    } 

方法sizes应该从size表中检索名称,通过size_set_sizessize_set模型...

我的应用程序是非常动态的,因此我需要去这个结构。我尝试了hasManyThrough关系,但无法让它工作。

+0

看起来像多对多:https://laravel.com/docs/5.4/eloquent-relationships#many-to-many。你可能想在你的问题中清理你的3表格定义,因为它非常容易混淆 - 使用项目符号或 – Andrew

回答

1

使用belongsToMany()关系如:

class Size extends Model 
{ 
    public function sizeSets() 
    { 
     return $this->belongsToMany(SizeSet::class, 'size_set_sizes'); 
    } 
} 

class SizeSet extends Model 
{ 
    public function sizes() 
    { 
     return $this->belongsToMany(Size::class, 'size_set_sizes'); 
    } 
} 

然后,你可以这样做:

$sizeSet = SizeSet::with('sizes')->find($id); 

然后$sizeSet->sizes将返回尺寸的集合,用于该尺寸集。

+0

正是我所做的 – Spidi