kevincobain2000/laravel-erd

A tool to automatically generate interactive ERD relationships in Models for Laravel
308,607 156
Install
composer require kevincobain2000/laravel-erd
Latest Version:1.7
PHP:^7.4|^8.0|^8.1|^8.2|^8.3
License:MIT
Last Updated:Nov 25, 2024
Links: GitHub  ·  Packagist
Maintainer: kevincobain2000

Laravel ERD Generator

Automatically generate interactive ERD from Models relationships in Laravel.

  • This package provides a CLI to automatically generate interactive ERD by looking into relationships setup inside Models.
  • The tool's interface is available to get JSON data of relationships and table schema from Models to be used by visual charts libraries of your choice such as d3.js etc
  • Output is an interactive ERD (Entity Relation Diagram) powered by HTML and JS (GOJS).
Lang Link
Details Medium Article
Demo Online Demo

Requirements

Lang Version
PHP 7.4 or 8.0
Laravel 6.* or 8.*

Installation

You can install the package via composer:

composer require kevincobain2000/laravel-erd --dev

You can publish the config file with:

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

Usage

You can access the ERD in localhost:3000/erd

or generate a static HTML

php artisan erd:generate

ERD HTML is generated inside docs/.

Sample

Screenshot

Image

Get JSON output

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

Sample JSON output

{
    "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"
                },
                ...
                ...
        }
        ...
    ]

Testing

./vendor/bin/phpunit

Changelog

  • Initial Release - POC

Related Packages

gabrieloliverio/laravel5-generators

Database metadata-based generators for Laravel 5

1
erirk/paypalpayment

laravel-paypalpayment is simple package help you process direct credit card paym...

0
doctrine/dbal

Powerful PHP database abstraction layer (DBAL) with many features for database s...

631,580,251 9,707
laravel/framework

The Laravel Framework.

576,155,700 34,907
laravel/tinker

Powerful REPL for the Laravel framework.

485,678,092 7,440