我有以下 2 个表:
广告:{id、标题、category_id} 类别:{id、name、parent_id}
表 1:广告
---|----------------------------|------------
id | title | category_id
---|----------------------------|------------
1 | Ad in Cars category | 2
2 | Another Ad in Cars category| 2
3 | Ad in Vehicles category | 1
表 2:类别
---|-----------|-----------
id | name | parent_id
---|-----------|-----------
1 | Vehicles | NULL
2 | Cars | 1
现在我需要获取类别和每个类别中的广告数量。此外,如果某个类别的子类别中有广告,则父类别的广告计数还应包括属于子类别的广告。
因此,如果我获取车辆类别中的广告数量,我应该得到:
Category | Count
---------|-----------
Vehicles | 3
如果我获取汽车类别中的广告数量,我应该得到:
Category | Count
---------|-----------
Cars | 2
如何在 Laravel 中实现这一目标?我正在使用 Laravel 5.4。
谢谢!
最佳答案
这不是解决方案,而是一个良好的开端。假设您已在类别模型中将关系设置为 hasMany(Ad)
,您可以这样做
$categories = Category::withCount('ads')->get();
这将为您提供所有类别及其“广告”数量。可以这样显示
foreach($categories as $category) {
echo $category->ads_count; //Pay attention to _count here appended to 'adds'
}
然后我想你可以对所有类别进行 foreach 循环,看看它们是否相关并增加它们的项目计数。例如:
foreach($categories as $category) {
if ( $category->subCategories ) {
foreach( $category->subCategories as $sub) {
$category->ads_count += $sub->ads_count;
}
}
}
只是一个指南。
希望对您有所帮助。
关于php - 拉维尔 |获取类别中的项目计数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42879147/