Laravel 获取所有类别的帖子数

Posted

技术标签:

【中文标题】Laravel 获取所有类别的帖子数【英文标题】:Laravel get all categories with posts count 【发布时间】:2020-06-05 04:03:43 【问题描述】:

嗨,我正在尝试让数组包含所有类别的数量 每个类别的帖子:例如:

[
id: 1, name: "category1", posts: 15 ,
id: 2, name: "category2", posts: 33 ,
id: 3, name: "category3", posts: 27 
]

详情:

帖子表
public function up()

    Schema::create('posts', function (Blueprint $table) 
        $table->bigIncrements('id');
        $table->bigInteger('user_id')->unsigned();
        $table->foreign('user_id')->references('id')->on('users');
        $table->string('slug')->unique();
        $table->string('title');
        $table->string('image');
        $table->text('description');
        $table->integer('category_id')->unsigned();;
        $table->longText('content');
        $table->boolean('published')->default(0);
        $table->timestamps();
    );

类别表
public function up()

    Schema::create('categories', function (Blueprint $table) 
        $table->increments('id');
        $table->string('name')->unique();
        $table->timestamps();
    );

帖子模型
public function category()

  return $this->belongsTo('App\Models\Category');

类别模型
public function posts()

  return $this->hasMany('App\Models\Post');

类别控制器
public function index()

  $Categories  = Category::with('posts')->get();
  return response()->json($Categories);

但是这个函数返回所有提交的帖子,是一种计算它们并将数字作为参数添加到数组中的方法吗?

【问题讨论】:

【参考方案1】:

您可以使用withCount

$categories = Category::withCount('posts')->get(); 

然后您可以循环访问 $categories 并访问

$category->posts_count 

每个类别。

【讨论】:

以上是关于Laravel 获取所有类别的帖子数的主要内容,如果未能解决你的问题,请参考以下文章

Laravel 类别、子类别和帖子

如何为帖子创建类别标签?我正在使用 laravel 8

如何为每种类型的 Laravel API 获取 5 个最新帖子?

检查某个类别中是不是存在帖子不起作用。 php,刀片,Laravel

Laravel - 如何将表格从帖子连接到类别

如何在laravel中按类别过滤帖子?