【问题标题】:Laravel get all categories with posts countLaravel 获取所有类别的帖子数
【发布时间】: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);
}

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

【问题讨论】:

    标签: php sql laravel laravel-6


    【解决方案1】:

    您可以使用withCount

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

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

    $category->posts_count 
    

    每个类别。

    【讨论】:

      猜你喜欢
      • 2021-12-20
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-11-04
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多