Download a latest package or use Composer:
composer require inlm/schema-generator
Schema Generator requires PHP 5.6.0 or later.
$extractor = new Inlm\SchemaGenerator\LeanMapperBridge\LeanMapperExtractor(__DIR__ . '/model/Entities/', new LeanMapper\DefaultMapper);
$adapter = new Inlm\SchemaGenerator\Adapters\NeonAdapter(__DIR__ . '/.schema.neon');
$dumper = new Inlm\SchemaGenerator\Dumpers\SqlDumper(__DIR__ . '/migrations/structures/');
$logger = new Inlm\SchemaGenerator\Loggers\MemoryLogger;
$generator = new Inlm\SchemaGenerator\SchemaGenerator($extractor, $adapter, $dumper, $logger, Inlm\SchemaGenerator\Database::MYSQL);
// $generator->setTestMode();
$generator->generate();
// or
$generator->generate('changes description');
Supported databases:
1) adapter loads old schema if exists. Schema can be stored in file, memory,... 2) extractor extracts new schema from entities, file, database,... 3) generator generates diff between old and new schema 4) dumper dumps differences to SQL file, database,... 5) adapter saves new schema (only if is test mode disabled)
Extracts new database schema from given source - entities, database or file.
inlm/schema-generator-leanmapper
)inlm/schema-generator-dibi
)Persists database schema in file, memory,...
inlm/schema-generator-dibi
)Dumps changes of database schema into migration file, database,...
inlm/schema-generator-dibi
)You can use loggers from czproject/logger
.
CzProject\Logger\CliLogger
CzProject\Logger\MemoryLogger
CzProject\Logger\OutputLogger
[!TIP] If you need generate
... AFTER column
inALTER TABLE
statements, call:$schemaGenerator->enablePositionChanges();
License: New BSD License
Author: Jan Pecha, https://www.janpecha.cz/