tomshaw / laravel-calendar-table
一个Laravel日历表数据库迁移和命令行工具。
Requires
- php: ^8.1|^8.2
- geoffreyrose/us-holidays: ^2.5
Requires (Dev)
- larastan/larastan: ^2.9
- laravel/pint: ^1.10|^2.0
- mockery/mockery: ^1.4.4
- orchestra/testbench: ^8.5|^9.0
- pestphp/pest: ^2.8|^3.0
- phpstan/phpstan: ^1.10
- phpunit/phpunit: ^10.1.1|^11.0
Suggests
- geoffreyrose/us-holidays: Extends Carbon and adds support for 42 US holidays.
README
日历表,也称为日期维度表,是数据库中一个帮助进行日期相关查询和报告的表。它包含特定范围内的每个日期的行,通常包括很多年。每行包含有关日期的各种字段,如日期、月份、年份、季度、星期几、是否为周末或工作日、是否为假日等。
日历表在数据库报告中的有用性来自于其简化并优化日期相关查询的能力。以下是一些优点
-
简化查询:没有日历表,提取日期组件通常需要复杂的函数和计算。有了日历表,您只需将您的数据与日历表连接即可获取这些组件。
-
提高性能:日期计算可能非常占用CPU并减慢查询速度。通过将这些计算移入日历表,您可以提高查询性能。
-
一致性:日历表确保在所有查询和报告中处理日期信息的一致性。
-
灵活性:您可以在日历表中添加自定义字段以满足您的业务需求。例如,您可以添加字段来表示公司的财政年度或特定业务事件。
-
处理缺失的日期:如果您的数据有缺失的日期,这些空档可能会在报告中引起问题。日历表可以帮助确保报告的连续性。
总的来说,日历表是任何经常在数据库中处理日期的人的非常有用的工具。
安装
使用以下命令通过composer安装包:
composer require tomshaw/laravel-calendar-table
如果您想更改命令默认值,请发布配置。
php artisan vendor:publish --provider="TomShaw\CalendarTable\Providers\CalendarTableServiceProvider" --tag=config
数据库迁移
运行数据库迁移以创建日历表。
php artisan migrate
命令行工具
日历表命令接受两个可选参数。如果没有指定起始年份,您将被提示输入一个。如果没有指定结束年份,将使用当前年份。
注意:如果表已预先填充,您将可以选择截断。
php artisan calendar:table --start=2000 --end=2030
当然,以下是一个README.md部分,说明了Laravel日历表包的配置选项
配置
Laravel日历表包提供了一些配置选项,您可以根据需要调整这些选项。您可以在config.php
文件中找到这些选项。
表名
table_name
选项允许您为数据库记录定义一个自定义的表名。默认情况下,它设置为'date_dimension'
。
'table_name' => 'date_dimension',
季节
seasons
数组允许您为每个季节定义起始月份。默认情况下,它是为北半球的气象季节配置的
- 春季从三月开始
- 夏季从六月开始
- 秋季从九月开始
- 冬季从十二月开始
'seasons' => [ 'Spring' => 3, 'Summer' => 6, 'Autumn' => 9, 'Winter' => 12, ],
如果您在南半球,您应该将季节重新配置为大约晚六个月开始
- 春季从九月开始
- 夏季从十二月开始
- 秋季从三月开始
- 冬季从六月开始
'seasons' => [ 'Spring' => 9, 'Summer' => 12, 'Autumn' => 3, 'Winter' => 6, ],
财政年度起始月份
fiscal_year_start_month
选项允许您定义财政年度的起始月份。值应该是介于1(一月)和12(十二月)之间的整数。默认情况下,它设置为10,表示财政年度从十月开始。
'fiscal_year_start_month' => 10,
日期范围
date_range
数组允许您定义填充日历表的有效起始和结束年范围。
-
start_year
:此选项定义最早的起始年份。默认为当前年份前20年。 -
end_year
:此选项定义最晚的结束年份。默认为当前年份后20年。
'date_range' => [ 'start_year' => Carbon\Carbon::now()->subYears(20)->year, 'end_year' => Carbon\Carbon::now()->addYears(20)->year, ],
要求
该包与 Laravel 10 或更高版本兼容。
支持
如果您有任何问题或疑问,请发起一个拉取请求。
许可证
MIT 许可证(MIT)。有关更多信息,请参阅许可证。