ekhaled / f3-cortex-model-generator
Generates F3 Cortex models by reverse engineering existing database schema
Installs: 1 016
Dependents: 1
Suggesters: 0
Security: 0
Stars: 15
Watchers: 3
Forks: 4
Open Issues: 0
Requires
- php: >=5.3.6
- ext-pdo: *
- ekhaled/schema-parser-mysql: >=1.3
README
Generates F3 Cortex models by reverse engineering existing database schema.
Currently only supports MySQL.
Installation
Please add
"ekhaled/f3-cortex-model-generator": "1.0"
to your composer file.
Usage
Create an executable PHP file with the following contents
#!/usr/bin/env php <?php require_once(__DIR__ . '/../src/vendor/autoload.php'); $config = [ 'output' => 'path/to/output/folder/', 'DB' => array(), //DB connection params 'namespace' => 'Models\\Base', 'extends' => '\\Models\\Base', 'relationNamespace' => '\\Models\Base\\', 'template' => 'path/to/template/file', 'indentation' => array(), 'exclude' => array() ]; $generator = new \Ekhaled\Generators\MySQL\Model($config); $generator->generate();
and, just run the file from the command line.
Options
output
- specifies the folder where models will be output to.DB
- an array in the following format ['host' => 'host.com', 'username' => '', 'password' => '', 'dbname' => 'name_of_database',]namespace
- Namespace of the generated modelsextends
- if you have a base model, you can make the generated model extend that model by specifying it here.relationNamespace
- Namespace of the connected classes that constitute relationships with a given model, usually it's the same asnamespace
template
- Path to file containing a custom template, if not specified a built-in template will be used.indentation
- an array that indicates what type of unit of indentation to be used on template generation followed by a starting level.
For example:['unit' => ' ', 'start_level' => 3]
. This will use 2 spaces as indentation starting at 6 spaces.
This is applied to the array defined by the {{FIELDCONF}} templateexclude_views
- Whether to generate models for Views too, defaults to false.exclude_connectors
- Whether to generate stub models for many-to-many connector tables, defaults to false. (Sometimes you might need these models to create db tables, for example for automated tests in test databases).exclude
- An array containing all tables that you would like to exclude while generating models. For example:array('migrations')
.
Custom templates
A typical custom template would look like:
<?php {{NAMESPACE}} class {{CLASSNAME}} {{EXTENDS}} { protected $fieldConf = [ {{FIELDCONF}} ], $table = '{{TABLENAME}}'; }
Just ensure that the placeholders are in place, and they will get replaced during model generation.
Supported placeholders are:
{{NAMESPACE}}
{{CLASSNAME}}
{{EXTENDS}}
{{FIELDCONF}}
{{TABLENAME}}