始终开启 / 报告引擎
Laravel 通用报告引擎
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
- 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-main
- 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: 2024-08-28 18:04:51 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 添加处理多种格式的功能,以下是基于上述示例的输出。
这将输出包含表格和执行 AJAX 请求获取所需数据的 HTML 页面。
{{ 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
变更日志
有关最近更改的更多信息,请参阅 CHANGELOG。
贡献
有关详细信息,请参阅 CONTRIBUTING。
安全漏洞
有关如何报告安全漏洞的更多信息,请参阅 我们的安全策略。
鸣谢
许可协议
MIT 许可协议 (MIT)。有关更多信息,请参阅 许可文件。