gpt4 book ai didi

php - 拉维尔 |获取类别中的项目计数

转载 作者:行者123 更新时间:2023-11-29 10:57:01 24 4
gpt4 key购买 nike

我有以下 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/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com