关于一个归档问题?

array:5 [0 => array:2 ["year" => 2020
    "month" => "December"
  ]
  1 => array:2 ["year" => 2019
    "month" => "December"
  ]
  2 => array:2 ["year" => 2018
    "month" => "December"
  ]
  3 => array:2 ["year" => 2018
    "month" => "August"
  ]
  4 => array:2 ["year" => 2017
    "month" => "December"
  ]
]比如在设计

产品需求:
每一年中那几个月发表了文章,做一个归档统计,有没有高效的方法?

还有什么更好的归档方式
根据文章表中的created_at字段进行年月分组 2018-08-17 16:16:30

2020
        1月
                文章标题1
                文章标题2
                ......
        23月
...
2019
        123月
....
2018

类似于上面这种结构

解决方案:

function initArray(array $array)
    {
        $newArray = [];
        foreach ($array as $item) {
            if (isset($newArray[$item['year']])) {
                $newArray[$item['year']]['month'][] = $item['month'];
            } else {
                $newArray[$item['year']] = ['year' => $item['year'], 'month' => [$item['month']]];
            }
        }
        return $newArray;
    }
    //用户的文章年月归档
    public function datearticle(User $user)
    {
        //获取文章中的年月
        $years_month = Article::selectRaw('year(created_at)  year,monthname(created_at) month, count(*) num')
            ->groupBy('year','month')
            ->orderByRaw('min(created_at) desc')
            ->get();
        $newArray = [];
        foreach ($years_month as $item) {
            if (isset($newArray[$item['year']])) {
                $newArray[$item['year']]['month'][] = $item['month'];
            } else {
                $newArray[$item['year']] = ['year' => $item['year'], 'month' => [$item['month']]];
            }
        }
        dd($newArray);
        return view('home.user.datearticle',compact('years'));
    }
本作品采用《CC 协议》,转载必须注明作者和本文链接
chenBJ
《L05 电商实战》
从零开发一个电商项目,功能包括电商后台、商品 & SKU 管理、购物车、订单管理、支付宝支付、微信支付、订单退款流程、优惠券等
《L01 基础入门》
我们将带你从零开发一个项目并部署到线上,本课程教授 Web 开发中专业、实用的技能,如 Git 工作流、Laravel Mix 前端工作流等。
讨论数量: 1

提两个方案吧,参考一下

  1. 可以新建一个表,每个表记录一个月份,跑个计划任务一类的更新数据
  2. 直接用SQL查询好了,select的时候把created_atmysql函数格式化成 年-月,然后 group by 一下 计算 count
4年前 评论

讨论应以学习和精进为目的。请勿发布不友善或者负能量的内容,与人为善,比聪明更重要!