Generates F3 Cortex models by reverse engineering existing database schema.
Currently only supports MySQL.
Please add
"ekhaled/f3-cortex-model-generator": "1.0"to your composer file.
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.
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 asnamespacetemplate- 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').
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}}