alltrons/laravel-erd-modules

一个用于自动在Laravel模型中生成交互式ERD关系的工具,升级后支持模块化工作

1.8 2022-04-13 22:04 UTC

This package is auto-updated.

Last update: 2024-09-14 03:56:10 UTC


README

自动从Laravel模型关系生成交互式ERD。

  • 此包提供了一个CLI,通过查看模型内部设置的关系来自动生成交互式ERD。
  • 工具的界面可以获取关系的JSON数据和表模式,以便使用您选择的视觉图表库,如d3.js等。
  • 输出是受HTML和JS(GOJS)支持的交互式ERD(实体关系图)。

要求

安装

您可以通过composer安装此包

composer require kevincobain2000/laravel-erd --dev

您可以使用以下命令发布配置文件

php artisan vendor:publish --provider="Kevincobain2000\LaravelERD\LaravelERDServiceProvider"

用法

您可以在 localhost:3000/erd 访问ERD

或生成静态HTML

php artisan erd:generate

ERD HTML生成在 docs/ 内。

示例

截图

Image

获取JSON输出

use Kevincobain2000\LaravelERD\LaravelERD;

$modelsPath = base_path('app/Models');

$laravelERD = new LaravelERD();
$linkDataArray = $laravelERD->getLinkDataArray($modelsPath);
$nodeDataArray = $laravelERD->getNodeDataArray($modelsPath);
$erdData = json_encode(
    [
        "link_data" => $linkDataArray,
        "node_data" => $nodeDataArray,
    ],
    JSON_PRETTY_PRINT
);
var_dump($erdData);

示例JSON输出

{
    "link_data": [
        {
            "from": "comments",
            "to": "users",
            "fromText": "1..1\nBT",
            "toText": "",
            "fromPort": "author_id",
            "toPort": "id",
            "type": "BelongsTo"
        },
        {
            "from": "comments",
            "to": "posts",
            "fromText": "1..1\nBT",
            "toText": "",
            "fromPort": "post_id",
            "toPort": "id",
            "type": "BelongsTo"
        },
        ...
        ...
    ],
    "node_data": [
        {
            "key": "comments",
            "schema": [
                {
                    "name": "id",
                    "isKey": true,
                    "figure": "Hexagon",
                    "color": "#be4b15",
                    "info": "integer"
                },
                {
                    "name": "author_id",
                    "isKey": false,
                    "figure": "Decision",
                    "color": "#6ea5f8",
                    "info": "integer"
                },
                ...
                ...
        }
        ...
    ]

测试

./vendor/bin/phpunit

变更日志

  • 初始发布 - POC