使用 Laravel Eloquent 连接 3 个表

Join 3 tables using Laravel Eloquent

所以我有 3 tables

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

我想在 size_set 模型中定义一个关系,该关系将检索可用于该 sizeset

的所有 sizes

类似于:

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

方法 sizes 应该从 size table 到 size_set 模型中的 size_set_sizes table 检索名称...

我的应用程序非常动态,因此我需要采用这种结构。我尝试了 hasManyThrough 关系,但无法正常工作。

我想我找到了我要找的答案是 pivot-table

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

100% 使用枢轴 table

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

这个link会给你所有你需要的

使用 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 将 return 该尺码集的尺码集合。