bluefyn-international / report-engine
v3.0.2
2022-09-30 17:51 UTC
Requires
- php: ^8.0.0|^8.1.0
- always-open/sidekick: ^4.0
- brick/money: ^0.5.0
- illuminate/contracts: ^9.0
- laravelcollective/html: ^6.2
- spatie/laravel-package-tools: ^1.4.3
Requires (Dev)
- barryvdh/laravel-ide-helper: ^2.8
- nunomaduro/collision: ^6.0
- orchestra/testbench: ^7.0
- phpunit/phpunit: ^9.3
- spatie/laravel-ray: ^1.9
- vimeo/psalm: ^4.4
- dev-main
- 3.x-dev
- v3.0.2
- v3.0.1
- v3.0.0
- 2.x-dev
- v2.2.2
- v2.2.1
- v2.2.0
- v2.1.0
- v2.0.0
- v1.8.0
- v1.7.5
- v1.7.4
- v1.7.3
- v1.7.2
- v1.7.1
- v1.7.0
- v1.6.3
- v1.6.2
- v1.6.1
- v1.6.0
- v1.5.0
- v1.4.0
- v1.3.0
- v1.2.6
- v1.2.5
- v1.2.4
- v1.2.3
- v1.2.2
- v1.2.1
- v1.2.0
- v1.1.1
- v1.1.0
- v1.0.9
- v1.0.8
- v1.0.7
- v1.0.6
- v1.0.5
- v1.0.4
- v1.0.2
- v1.0.1
- v1.0.0
- dev-chore/fixing-psalm
- dev-feature/improve-field-and-filter-timezone-support
- dev-chore/1.x-tabulator-5.x-support
- dev-chore/fix-config-row-context-actions
- dev-feature/in-filter
- dev-chore/summation-params
- dev-chore/add-custom-summation
- dev-feature/add-config-endpoint
This package is auto-updated.
Last update: 2022-10-28 13:42:33 UTC
README
Laravel 通用报告引擎
安装
您可以通过 composer 安装此包。
composer require always-open/report-engine
使用方法
创建报告
创建一个扩展 ReportBase 的报告。在这个类中,您将定义查询以获取数据以及要输出的列。
<?php namespace App\Reports\User; use App\Models\User; use AlwaysOpen\ReportEngine\BaseFeatures\Data\Types\Text; use AlwaysOpen\ReportEngine\ReportBase; use Illuminate\Database\Query\Builder; class UserReport extends ReportBase { protected $autoloadInitialData = true; /** * @return string */ public function title(): string { return 'User Maintenance'; } /** * @return string */ public function description(): string { return 'List of all users within the system'; } /** * @return Builder */ public function baseQuery(): Builder { return User::toBase() ->select([ 'id', 'email', 'name', ]); } /** * @return array */ public function availableColumns(): array { return [ 'name' => [ 'label' => 'Name', 'filterable' => true, 'type' => new Text(), ], 'email' => [ 'label' => 'Email', 'filterable' => true, 'type' => new Text(), ], ]; } }
创建控制器
创建一个用于输出报告的控制器。
<?php namespace App\Http\Controllers; use App\Reports\User\UserReport; class UserController extends Controller { /** * @return UserReport */ public function index() : UserReport { return app(UserReport::class); } }
创建路由
创建路由时,请确保包含 multiformat
,这将处理诸如 .sql
和 .json
端点调用。
<?php use App\Http\Controllers\UserController; Route::get('users', [UserController::class, 'index']) ->multiformat();
路由
Multiformat 向 URL 添加处理多个格式的功能,以下是在上述示例的基础上构建的输出。
这将输出一个包含表格的 HTML 页面,并通过 AJAX 请求获取所需数据。
{{ base_url }}/users
这将输出数据的 JSON 有效负载。
{{ base_url }}/users.json
这将输出完整的 SQL 查询,对调试很有用。
{{ base_url }}/users.sql
这将返回查询的 explain 命令的输出,对调试很有用。
{{ base_url }}/users.explain
过滤器
以下是默认类型的可能过滤器。要构建一个过滤器,请遵循以下格式
let filterParams = new URLSearchParams(); let filterName = 'name' let action = 'equals' let value = 'bob' filterParams.append('filters['+filterName+']['+action+']', value)
日期时间
- 不等于
- 等于
- 大于
- 大于等于
- 小于
- 小于等于
小数
- 不等于
- 等于
- 大于
- 大于等于
- 小于
- 小于等于
美元
- 不等于
- 等于
- 大于
- 大于等于
- 小于
- 小于等于
枚举
- 等于
HTML
- 包含
- 不包含
整数
- 不等于
- 等于
- 大于
- 大于等于
- 小于
- 小于等于
可空小数
- 不等于
- 等于
- 大于
- 大于等于
- 为空
- 不为空
- 小于
- 小于等于
可空整数
- 不等于
- 等于
- 大于
- 大于等于
- 为空
- 不为空
- 小于
- 小于等于
数字
- 不等于
- 等于
- 大于
- 大于等于
- 小于
- 小于等于
数字HTML
- 不等于
- 等于
- 大于
- 大于等于
- 小于
- 小于等于
百分比
- 不等于
- 等于
- 大于
- 大于等于
- 小于
- 小于等于
文本
- 包含
- 不包含
- 不等于
- 等于
URL
- 包含
- 不包含
是/否
- 为真
- 为假
是/否简短
- 为真
- 为假
测试
composer test
更新日志
请参阅更新日志了解最近有哪些变化。
贡献
请参阅贡献指南了解详细信息。
安全漏洞
请查阅我们的安全策略了解如何报告安全漏洞。
鸣谢
许可证
MIT许可证(MIT)。请参阅许可证文件获取更多信息。