langleyfoxall/eloquent-report-generator

从Eloquent模型生成CSV、PDF、Markdown、HTML等格式的报告。

v1.1.0 2023-08-23 09:41 UTC

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'));