使用Laravel Eloquent加入3个表

时间:2017-01-30 08:53:48

标签: laravel eloquent relationships

所以我有3张桌子

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_sizes表格通过size_set表格检索名称...

我的应用程序非常动态,因此我需要使用这种结构。我尝试了hasManyThrough关系,但无法让它发挥作用。

3 个答案:

答案 0 :(得分:1)

100%使用数据透视表

https://laravel.com/docs/5.4/eloquent-relationships

此链接将为您提供所需的一切

答案 1 :(得分: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将返回该尺寸集的大小集合。

答案 2 :(得分:0)

我想我找到了我要找的东西答案是一个数据透视表

http://laraveldaily.com/pivot-tables-and-many-to-many-relationships/