langleyfoxall / eloquent-report-generator
从Eloquent模型生成CSV、PDF、Markdown、HTML等格式的报告。
v1.1.0
2023-08-23 09:41 UTC
Requires
- php: >=7.0
- divineomega/uxdm: ^4.0.2
- divineomega/uxdm-eloquent: ^3.2
- illuminate/database: ^5.1|^10.0
This package is auto-updated.
Last update: 2024-09-11 10:37:36 UTC
README
本软件包可以用于从Eloquent模型以多种格式生成报告,例如CSV、PDF、Markdown和HTML。
安装
要安装,只需运行以下composer命令。
composer require langleyfoxall/eloquent-report-generator
请记住,如果您的框架没有这样做,请务必包含vendor/autoload.php
文件。
使用
首先,将Reportable
特质添加到您希望生成报告的模型或模型中。
namespace App; use Illuminate\Database\Eloquent\Model; use LangleyFoxall\EloquentReportGenerator\Traits\Reportable; class User extends Model { use Reportable; // ...
然后,您可以通过调用此特质中的静态generateReport
方法在应用程序的其他地方生成报告。
以下代码片段提供了示例用法。
// Report format $format = (new CsvReportFormat()); //$format = (new PdfReportFormat()); //$format = (new MarkdownReportFormat()); //$format = (new HtmlReportFormat()); // Report generation User::generateReport() ->format($format) ->query(function ($query) { // Restrict the records used in the report $query->where('created_at', '>=' '2018-01-01'); }) ->fields(['email', 'name', 'created_at']) ->fieldMap([ // Change how fields appear in the report 'email' => 'Email address', 'name' => 'Name', 'created_at' => 'Joined Date', ]) ->dataRowManipulator(function (DataRow $dataRow) { // Format the 'name' field $name = $dataRow->getDataItemByFieldName('name'); $name->value = ucwords($name); } ->save(storage_path('app/report.csv'));