A tool to automatically generate interactive ERD relationships in Models for Laravel
kevincobain2000/laravel-erd is a Laravel package for a tool to automatically generate interactive erd relationships in models for laravel.
It currently has 155 GitHub stars and 288.909 downloads on Packagist (latest version 1.7).
Install it with composer require kevincobain2000/laravel-erd.
Discover more Laravel packages by kevincobain2000
or browse all Laravel packages to compare alternatives.
Last updated
Automatically generate interactive ERD from Models relationships in Laravel.
| Lang | Link | | :------ | :------------------------------------------------------------------------------------------------------------------------------------- | | Details | Medium Article | | Demo | Online Demo |
| Lang | Version | | :------ | :--------- | | PHP | 7.4 or 8.0 | | Laravel | 6.* or 8.* |
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"
You can access the ERD in localhost:3000/erd
or generate a static HTML
php artisan erd:generate
ERD HTML is generated inside docs/.

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"
},
...
...
}
...
]
./vendor/bin/phpunit