如何在 laravel 中处理多级一对多关系

How to handle multiple levels of one-to-many relationships in laravel

我的 laravel 5.3 应用程序中有三个模型,它们之间的关系如下

Category:

public function subcategories(){
    return $this->hasMany('App\Subcategory');
}


Subcategory:

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

public function posts(){
    return $this->hasMany('App\Posts');
}


Post:

public function subcategory(){
    return $this->belongsTo('App\Subcategory');
}

现在在我的控制器中,我只有一个类别,我想要属于我拥有的类别的子类别中的所有帖子(按 id 排序)。类似于:

$posts = $category->subcategories->posts;

但我不知道该怎么做。帮助将不胜感激。

嘿艾哈迈德

你需要的是hasManyThrough关系的使用:

Category:

public function posts(){
    return $this->hasManyThrough('App\Posts', 'App\Subcategory');
}

那么你可以这样使用它:

$posts = $category->posts;