md0 / regenerator
Laravel ReGenerator
Requires
- doctrine/dbal: ^2.5|^3.0
- dompdf/dompdf: ^2.0.0
- laravel/framework: ^10.0|^9.0|^8.0|^7.0
Requires (Dev)
- orchestra/testbench: ~5|~6
- phpunit/phpunit: ~9.0
Suggests
- md0/backpack-regenerator: Backpack-based GUI interface for ReGenerator
This package is auto-updated.
Last update: 2024-09-10 11:55:01 UTC
README
基于SQL查询的Laravel快速报告生成器。
这是一个旨在为网站/应用管理员使用的工具,他们需要快速创建外观不错的报告以进行显示或导出,仅使用SQL选择语句和几个参数。使用Bootstrap 3/4类进行格式化,但如果需要自定义最终外观,也可以输出到数组。
此包不包括用于管理报告的GUI。如果您需要从管理界面编辑报告,请查看 Backpack ReGenerator。
应适用于任何高于5.6版本的Laravel,但仅在v8上进行了测试。
安装
通过Composer要求包
composer require md0/reportgenerator
运行数据库迁移
php artisan migrate
可选
发布资源(仅适用于图表)
php artisan vendor:publish --provider="MD0\ReGenerator\ReGeneratorServiceProvider" --tag="assets"
发布配置文件(以修改新报告的默认设置)
php artisan vendor:publish --provider="MD0\ReGenerator\ReGeneratorServiceProvider" --tag="config"
发布视图(以修改图表选项和/或PDF标题)
php artisan vendor:publish --provider="MD0\ReGenerator\ReGeneratorServiceProvider" --tag="views"
发布语言文件。只有三个可翻译的字符串(用于聚合函数),因此您可以在 resources/lang/vendor/regenerator 文件夹内编辑它们,或者直接将它们添加到主翻译文件中。
provider="MD0\ReGenerator\ReGeneratorServiceProvider" --tag="lang"
用法
要使用ReGenerator,您可以选择以下方式之一
- 动态使用类
use MD0\ReGenerator\Report; class MyClass { function report() { $report = new Report; $myReport = $report->setReport('my_report')->getHtml(); } }
- 使用 Report 外观
use MD0\ReGenerator\Facades\Report; class MyClass { function report() { Report::setReport('my_report')->getHtml(); } }
入门
要开始,您需要的只是访问您需要从中提取报告的表/表以及您的实际选择语句
Report::set('query', 'select name, email from users')->getHtml();
这将生成一个临时(即时)报告。要使用默认选项集创建永久报告,请使用 create 方法
Report::create('my_report', 'select name, email from users')->getHtml();
这将向数据库添加新的报告并以HTML形式生成它。然后您可以在视图的任何位置包含它。
要访问之前创建的报告,您需要使用 setReport 方法,并在生成之前(可选)使用 set 任何自定义首选项
Report::setReport('my_report') ->set('pdfPageSize', 'letter') ->set('pdfPageOrientation', 'landscape') ->getPdf();
要使任何自定义永久化,请使用 update 方法
Report::setReport('my_report')->update('PdfPageSize', 'letter');
请查看下一节,以获取您可以使用ReGenerator使用的完整方法列表和属性。
参考
属性
每个报告可以有一个或多个关联属性,可以在运行时设置或提交到数据库
- name [必须保存]:报告的唯一名称。仅限字母数字字符、破折号或下划线。
- query [必须]:用于生成报告的SQL查询。如果需要,使用标准blade标记({{ }})包含参数。
- database:Laravel中定义的数据库名称。留空以使用默认值。确保使用Laravel定义的名称,而不是实际的数据库名称。
- title:报告的描述性标题。也可以有可替换的内容(参数)。
- reportType:要生成的报告类型。默认为 vertical(经典),使用 horizontal 用于转置报告(列在行上),或使用 slices 用于单个记录。
- tag:用于将报告分组到集合中的标签。如果不需要,留空。
- numericCols:包含数值的列号的逗号分隔列表。
- thousandsSeparator:用作千位分隔符的字符。默认为点。
- decimalsSeparator:用作小数分隔符的字符。默认为逗号。
- countCols:将显示计数总数的列号的逗号分隔列表。
- sumCols:将显示求和聚合的列号的逗号分隔列表。
- averageCols:将显示平均聚合的列号的逗号分隔列表。
- pdfPageSize:由DomPdf使用,默认为A4。
- pdfPageOrientation:PDF页面方向,纵向或横向。
- pdfFontSize:PDF字体大小。以磅为单位,默认为10。
- pdfTemplate:用于包装PDF报告的自定义视图。留空以使用默认值。
- csvQuotes:用于包围CSV字段的引号类型。默认为无。
- csvDelimiter:CSV字段分隔符。通常是逗号或分号,默认为逗号。
- chartType:将生成的图表类型。选择线条、柱状和饼图之间。默认为线条。
- chartSeries:包含图表系列的列的逗号分隔列表。
- chartLabels:包含图表标签的列号。
- chartColors:在图表中使用的十六进制颜色代码的逗号分隔列表。
- chartTemplate:用于生成的图表的自定义视图。留空以使用默认值。
- parameters:要在SQL查询中替换的字符串。在下面的示例中,{{condition1}}和{{condition2}}字符串将在SQL查询中替换。
$validParameters = [ 'condition1' => 'where active=1', 'condition2' => 'and verified=1', ];
方法
setReport(string $name): object | bool
设置活动报告。
- name - 报告的名称。
set(string $property, string $value): object
为当前报告设置属性。可用于存储的报告(在setReport()之后)或与自身链接以生成临时报告。
- property - 匹配的报告属性;
- value - 分配给属性的值。
getValue(int $line, int $column): string | bool
从报告中返回特定值,当您有固定大小(x/y)报告时很有用。
- line - 报告中的行;
- column - 报告中的列。
getArray(): string
以关联数组形式返回当前报告。必须在setReport()或set()之后调用。
getHtml(): string
以使用Bootstrap类格式化的HTML格式返回当前报告。必须在setReport()或set()之后调用。
getPdf(): string
以PDF文件的形式返回当前报告,在变量中。必须在setReport()或set()之后调用。要显示或下载PDF文件,请设置Content-Type和Content-Disposition头指令
return response()->make($pdfReport, 200, [ 'Content-Type' => 'application/pdf', 'Content-Disposition' => 'inline; filename="test.pdf"', ]);
getChart(): string
以canvas Chart的形式返回当前报告,准备好插入任何视图。必须在setReport()或set()之后调用。
getReports([string $property], [string $value]): array | bool
返回包含所有符合特定标准的报告的数组。如果没有提供属性,则该方法返回所有可用报告的列表。
- property - 匹配的属性;
- value - 用于过滤报告的属性的特定值。
create(string $name, string $query, [string $database], [array $parameters]): object | bool
在数据库中创建新的报告条目。
- name - 报告的唯一名称;
- query - 要执行的完整SQL查询;如果有参数,则必须也提供第4个参数;
- database - 要运行查询的Laravel数据库名称;
- parameters - 包含要替换在执行SQL查询之前SQL查询中的参数名称和值的数组。
update(string | array $data, [string $value]): object | bool
更新报告。必须在setReport()方法之后调用。
- data - 可以是报告的单个属性或包含属性-值对的数组;
- value - 与单个属性关联的值。对于批量更新不需要。
delete(): bool
删除报告。必须在调用 setReport() 方法之后进行。
覆盖
更改默认参数
要更改新报告的默认参数,请按上述方式发布配置文件,并调整 defaults 数组以满足您的需求。
自定义PDF布局
要覆盖默认的PDF页面布局(例如添加标志等),发布视图并编辑 views/vendor/md0/regenerator/pdf/report.blade.php 以满足您的需求。如果您需要多个模板,请创建自己的视图,并通过 pdfTemplate 属性指向它们。
自定义图表选项
如果您需要调整Chart.js的设置,请发布视图并编辑 views/vendor/md0/regenerator/chart/report.blade.php。如果您需要多个模板,请创建自己的视图,并通过 chartTemplate 属性指向它们。
错误 & 建议
请将您的改进建议或错误报告/错误发送到 问题
部分。
许可证
在GPL-3.0许可证下分发。有关更多信息,请参阅 LICENSE
文件。
致谢
ReGenerator使用以下开源库生成报告。请参阅它们各自的页面,获取有关使用和可用的自定义信息的更多信息。