首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Laravel |分类取数

Laravel |分类取数
EN

Stack Overflow用户
提问于 2017-03-19 03:54:58
回答 1查看 1.1K关注 0票数 0

我有以下两个表:

Ad:{id,title,category_id}类别:{id,name,parent_id}

表1:广告

代码语言:javascript
复制
---|----------------------------|------------
id | title                      | category_id
---|----------------------------|------------
1  | Ad in Cars category        | 2
2  | Another Ad in Cars category| 2
3  | Ad in Vehicles category    | 1 

表2:类别

代码语言:javascript
复制
---|-----------|-----------
id | name      | parent_id
---|-----------|-----------
1  | Vehicles  | NULL
2  | Cars      | 1 

现在我需要获取类别和每个类别中的广告数量。此外,如果某个类别在子类别中包含广告,则父类别的广告计数也应包括属于子类别的广告。

因此,如果我获取车辆类别中的广告计数,我应该得到:

代码语言:javascript
复制
Category | Count
---------|-----------
Vehicles | 3

如果我获取汽车类别中的广告计数,我应该得到:

代码语言:javascript
复制
Category | Count
---------|-----------
Cars     | 2

我如何在Laravel中实现这一点?我使用的是Laravel 5.4。

谢谢!

EN

回答 1

Stack Overflow用户

发布于 2017-03-19 04:19:20

这不是一个解决方案,而是一个领先的开始。假设您在Category模型中已经将关系集设置为hasMany(Ad),您可以这样做

代码语言:javascript
复制
$categories = Category::withCount('ads')->get();

这将给你所有的类别和他们的‘广告’计数。您可以像这样显示

代码语言:javascript
复制
foreach($categories as $category) {
    echo $category->ads_count; //Pay attention to _count here appended to 'adds'
}

然后我猜你可以对所有类别进行foreach循环,看看它们是否相关,并增加它们的项数。例如:

代码语言:javascript
复制
foreach($categories as $category) {
    if ( $category->subCategories ) {
        foreach( $category->subCategories as $sub) {
            $category->ads_count += $sub->ads_count;
        }
    }
}

只是一个向导。

希望能有所帮助。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/42879147

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档