kakaprodo / system-analytic
一个简化了基于数据库数据的Laravel系统分析开发的包
Requires
- php: >=8.0
- kakaprodo/custom-data: >=1.9.5 || dev-develop
- laravel/framework: >=8.0
README
一个简化了基于您数据库中的数据的系统分析实现的Laravel包
use Kakaprodo\SystemAnalytic\AnalyticGate; AnalyticGate::process([ 'analytic_type' => 'new-user-bar-chart', 'scope_type' => 'this_week',// last_week, last_year,last_month,range_date, range_year ... ]);
1. 前提条件
- php >= 7
- kakaprodo/custom-data 包
2. 安装
composer require kakaprodo/system-analytic
3. 发布骨架
-
配置文件
php artisan system-analytic:config
上述命令将在配置文件夹中创建一个名为
system-analytic.php
的配置文件。 -
骨架文件
在此阶段,您可以打开配置文件夹中的
system-analytic.php
文件。从那里您可以查看所有设置,并根据您的需求进行自定义。然后运行以下命令创建分析Hub
php artisan system-analytic:install
运行上述命令后,将在您的 app/Http 文件夹(默认)和 app/Http/Requests 文件夹中创建一个新的文件夹。在下一节中,您将发现这些文件中将发生哪些神奇的事情。穿上您的鞋子吧 🤪
4. 您的第一个分析类(处理器)
1. 创建处理器
要生成分析类,您需要运行以下命令
php artisan system-analytic:handler NewUserBarChart --bar-chart
以下处理器将被创建,现在让我们解释一下
class NewUserBarChart extends BlockChart { protected function boot() { } protected function query() { return DB::table('example') } protected function result(LazyCollection $groupedResult): AnalyticResponse { return $this->response($groupedResult->all()); } }
如您所见,我们有三个魔法方法和非常重要需要理解的方法
boot
: 您可以使用此方法作为处理器的构造函数query
: 您的类的核心,此方法将返回基于请求范围过滤数据时将使用的值。result
: 将返回所有过滤器都应用过后的数据,并根据处理器的类型(柱状图)进行格式化。
2. 在处理器中定义基本查询
现在我们有了处理器,让我们给它一个意义,使其能够返回系统新用户的柱状图数据
class NewUserBarChart extends BlockChart { protected $scopeColumn = "users.created_at"; protected $groupBy = "created_at"; protected function boot() { } protected function query() { return DB::table('users')->orderBy('id'); } protected function result(LazyCollection $groupedUsersByCreatedAt): AnalyticResponse { $result = $groupedUsersByCreatedAt->map(function ($users) { return $users->count(); }); return $this->response($result->all()); } }
现在我们有了返回每个日期新用户数量的处理器。请注意,您可以对查询进行任何选择的逻辑,它将正常工作。
3. 注册处理器类
现在您已经准备好要使用的处理器。要注册您的处理器,您需要打开 AnalyticHandlerRegister
类,并在 handlers
方法下注册它。您将在我们早期在本文档中创建的分析骨架文件夹中看到此类。
class AnalyticHandlerRegister extends AnalyticHandlerRegisterBase { /** * register a key value array of your handlers, * where the key is the analytic_type and the value * is the actual handler */ public static function handlers(): array { return [ NewUserBarChart::type() => NewUserBarChart::class, ]; } }
您可以看到,我们使用了 NewUserBarChart::type()
,type
方法将自动返回您的处理器类名称的大写形式。因此,如果您认为您将拥有多个具有相同名称的处理器,那么您可以在 NewUserBarChart::type()
的位置指定您自己的名称。
3. 使用处理器类
现在要调用处理器,我们将使用 AnalyticGate
类和您的处理器已注册的名称。请注意,AnalyticGate
是所有已注册处理器的入口。
use Kakaprodo\SystemAnalytic\AnalyticGate; AnalyticGate::process([ 'analytic_type' => 'new-user-bar-chart',// NewUserBarChart::type() 'scope_type' => 'this_week',// last_week, last_year,last_month ... ]);
非常简单,对吧 ???🤪🤪🤪🤪🤪🤪🤪!!!
现在,从上述代码中,我们只使用了 AnalyticGate
类支持的一小部分选项。这里还有其他您可以使用的选项
$options = [ 'scope_value' => date based on the scope_type, 'scope_from_date' => date or dateTime based on your need, 'scope_to_date' => date or dateTime based on your need, 'search_value' => string or Array, 'should_export' => Bool, 'file_type' => string between [csv,xlsx], 'selected_option' => string, 'should_clear_cache' => Bool ];
现在我知道,您可能想知道这个家伙为什么不完成文档。😜伙计,我无法把所有东西都放在这里,但请相信我,我正在编写完整的文档,一旦完成,您将是第一个知道的人。现在击掌 🖐✋🏾。