关系 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
]
]
..........
我得到了类别id
和name
的列表,并根据关系得到了产品数据数组。在我的产品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
型号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
]
]
..........
我得到了类别id
和name
的列表,并根据关系得到了产品数据数组。在我的产品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