关系 laravel : 计数数据

Relationship laravel : count data

型号Category:

public function product()
{
    return $this->hasMany(products::class);
}

型号product:

public function category()
{
    return $this->belongsTo(Category::class);
}

我在控制器中处理:

$result = Category::select(['id', 'name'])
    ->with(['product:category_id, status'])
    ->where('order', 1)
    ->get();

原始数据打印结果:

[
  'id' => 1,
  'name' => 'Hot'
  'product' => [
     'status' => 1,
     'category_id' => 1
   ]
]
[
   'id' => 2,
   'name' => 'New'
   'product' => [
      'status' => 2,
      'category_id' => 2
   ]
]
..........

我得到了类别idname的列表,并根据关系得到了产品数据数组。在我的产品table中,有一个status列的值等于1,2,3.

现在我想通过使用该关系得到的产品数组计算有多少 status = 1 和多少 status = [2, 3]?

可以使用withCount统计相关数据。比方说,您想要总产品、status1 产品和 status23 产品。

$result = Category::select(['id', 'name'])
    ->with(['product:category_id, status'])
    ->withCount([
        'product', 
        'product as status_one_product' => function ($query) {
            $query->where('status', 1);
         },
         'product as status_other_product' => function ($query) {
              $query->whereIn('status', [2, 3]);
          }
     ])
     ->where('order', 1)
     ->get();

现在您可以获得像

这样的统计数据
echo $result[0]->product_count; // total product
echo $result[0]->status_one_product; // total product with status 1
echo $result[0]->status_other_product; // total product with status 2 and 3