首页 > 解决方案 > 我想显示每个类别的所有帖子

问题描述

我有一个像这样的 数据库数据库

我的 Categories.php

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

我的子类别.php

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

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

我的帖子.php

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

我想从每个类别中获取所有帖子,并将它们显示在我的“索引”页面上,我该怎么办?

标签: laravel

解决方案


您可以使用这种关系:https ://laravel.com/docs/master/eloquent-relationships#has-many-through

分类.php

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

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

子类别.php

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

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

帖子.php

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

然后你可以用它们各自的帖子调用类别,如下所示:

Categories::with('posts')->get()

注意:您应该使用标准命名约定,以单数形式使用模型.. https://webdevetc.com/blog/laravel-naming-conventions


推荐阅读