The aim of this project is to generate database documentation from sql schema.
- MySQL
- MariaDB
- Apache Cassandra (Basics)
- PNG, SVG image
- Plantuml raw text
- Json
$ composer require pongee/database-schema-visualization
or add it the your composer.json and make a composer update pongee/database-schema-visualization.
$ php ./database-schema-visualization mysql:image ./example/schema/sakila.sql > ./example/img/sakila.png
$ php ./database-schema-visualization mysql:image --type png ./example/schema/sakila.sql > ./example/img/sakila.png
$ php ./database-schema-visualization mysql:image --type svg ./example/schema/sakila.sql > ./example/img/sakila.svg
$ php ./database-schema-visualization mysql:json ./example/schema/sakila.sql
$ php ./database-schema-visualization mysql:plantuml ./example/schema/sakila.sql
<?php declare(strict_types=1);
use Pongee\DatabaseSchemaVisualization\DataObject\Sql\Database\Connection\ConnectionCollection;
use Pongee\DatabaseSchemaVisualization\Export\Plantuml;
use Pongee\DatabaseSchemaVisualization\Generator\ImageGenerator;
use Pongee\DatabaseSchemaVisualization\Parser\MysqlParser;
include __DIR__ . '/../../vendor/autoload.php';
$sqlSchema = '
CREATE TABLE IF NOT EXISTS `foo` (
`id` INT(10) UNSIGNED NOT NULL COMMENT "The id"
) ENGINE=innodb DEFAULT CHARSET=utf8;
';
$sqlParser = new MysqlParser();
// $cqlParser = new \Pongee\DatabaseSchemaVisualization\Parser\CassandraParser();
$plantumlExport = new Plantuml(file_get_contents(__DIR__ . '/../../src/Template/Plantuml/v1.twig'));
$forcedConnectionCollection = new ConnectionCollection();
$imageGenerator = new ImageGenerator(
'png',
__DIR__ . '/../../bin/plantuml.jar',
__DIR__ . '/../../tmp/'
);
$schema = $sqlParser->run($sqlSchema, $forcedConnectionCollection);
print $imageGenerator->generate($plantumlExport->export($schema));
<?php declare(strict_types=1);
use Pongee\DatabaseSchemaVisualization\DataObject\Sql\Database\Connection\ConnectionCollection;
use Pongee\DatabaseSchemaVisualization\Export\Json;
use Pongee\DatabaseSchemaVisualization\Parser\MysqlParser;
include './vendor/autoload.php';
$sqlSchema = '
CREATE TABLE IF NOT EXISTS `foo` (
`id` INT(10) UNSIGNED NOT NULL COMMENT "The id"
) ENGINE=innodb DEFAULT CHARSET=utf8;
';
$mysqlParser = new MysqlParser();
$jsonExport = new Json();
$forcedConnectionCollection = new ConnectionCollection();
$schema = $mysqlParser->run($sqlSchema, $forcedConnectionCollection);
print $jsonExport->export($schema);
This will generate:
{ "tables": { "foo": { "columns": [ { "name": "id", "type": "INT", "typeParameters": [ "10" ], "otherParameters": "UNSIGNED NOT NULL", "comment": "The id" } ], "indexs": { "simple": [], "spatial": [], "fulltext": [], "unique": [] }, "primaryKey": [] } }, "connections": [] }