用thinkphp5统计最近30天内,每天用户注册数量
时间: 2023-07-24 17:08:55 浏览: 48
好的,对于您的问题,我可以给出一个基本的思路和方案:
1. 首先,您需要创建一个用于存储用户数据的数据库表,例如 user 表,包含一些基本的字段,例如 id、name、created_at 等。
2. 在用户注册时,您需要将用户的注册信息保存到数据库中。可以使用 ThinkPHP 的模型来实现数据的添加操作,例如:
```php
use app\model\User;
$user = new User();
$user->name = '张三';
$user->created_at = time();
$user->save();
```
3. 使用 ThinkPHP 的查询构造器查询最近30天内的用户注册数据。可以使用 whereBetween 方法来查询指定日期范围内的数据,例如:
```php
use app\model\User;
$startTime = strtotime('-29 day');
$endTime = time();
$userCount = User::whereBetween('created_at', [$startTime, $endTime])->count();
```
4. 将每天的注册数据按照日期进行分组统计。可以使用 ThinkPHP 的 group 方法和 format 方法来实现分组统计和格式化数据,例如:
```php
use app\model\User;
use think\Collection;
$startTime = strtotime('-29 day');
$endTime = time();
$userList = User::field('FROM_UNIXTIME(created_at, "%Y-%m-%d") as date, COUNT(*) as count')
->whereBetween('created_at', [$startTime, $endTime])
->group('date')
->select();
$userData = Collection::make($userList)->format(function ($item) {
return [
'date' => $item['date'],
'count' => $item['count'],
];
})->toArray();
```
5. 最后,您可以将统计结果渲染到页面中,例如使用 ECharts 组件来展示统计图表:
```html
<div id="chart" style="width: 100%; height: 400px;"></div>
<script src="https://cdn.jsdelivr.net/npm/echarts@5.1.2/dist/echarts.min.js"></script>
<script>
var data = <?php echo json_encode($userData); ?>;
var chart = echarts.init(document.getElementById('chart'));
var option = {
title: {
text: '最近30天每天用户注册数量',
},
xAxis: {
type: 'category',
data: data.map(item => item.date),
},
yAxis: {
type: 'value',
},
series: [{
data: data.map(item => item.count),
type: 'bar',
}],
};
chart.setOption(option);
</script>
```
综上所述,以上是一个基本的使用 ThinkPHP 统计最近30天内每天用户注册数量的方案。当然,具体实现还需要根据您的实际情况进行相应的修改和优化。