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 API 获取 5 个最新帖子?