Eloquent hasMany 反转

Eloquent hasMany Inversion

我有三个 Eloqent 模型,我想以一对多的方式相互关联(类别、子类别和样式)。 hasMany 关系正常工作,但反转 (belongsTo) 却不正常。

模型是 Paragon\Products\Category、Paragon\Products\Subcategory 和 Paragon\Products\Style。表格如下所示:

类别 Paragon\Products\Category

ID    ...
1
2

子类别 Paragon\Products\Subcategory

ID   Category    ...
1    2
2    2

风格Paragon\Products\Style

ID   Subcategory    ...
1    1
2    1

关系如下所示:

类别 Paragon\Products\Category

public function subcategories() {
    return $this->hasMany('Paragon\Products\Subcategory', 'category');
}

子类别 Paragon\Products\Subcategory

public function styles() {
    return $this->hasMany('Paragon\Products\Style', 'subcategory');
}

public function category() {
    return $this->belongsTo('Paragon\Products\Category', 'category');
}

风格Paragon\Products\Style

public function subcategory() {
    return $this->belongsTo('Paragon\Products\Subcategory', 'id', 'subcategory');
}

理想情况下,我希望能够调用 $subcategory->category();并返回 Paragon\Products\Category 的实例。在我这样做的那一刻,我得到了一个返回的 Builder 实例。我假设我从我的关系中遗漏了某种获取方法...

感谢任何帮助,谢谢!

这就是你想要的

$subcategories = $subcategory->with('category') -> get();


foreach ($subcategories  as $row){


}