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

时间:2016-12-13 18:34:45

标签: php laravel eloquent laravel-5.3

我的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;

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

1 个答案:

答案 0 :(得分:3)

嘿艾哈迈德

您需要的是使用hasManyThrough关系:

Category:

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

然后你可以像这样使用它:

$posts = $category->posts;