ekhaled/f3-cortex-model-generator

Generates F3 Cortex models by reverse engineering existing database schema

1.8 2022-03-09 15:40 UTC

This package is auto-updated.

Last update: 2024-05-09 19:58:04 UTC


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 models
  • extends - 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 as namespace
  • 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}} template
  • exclude_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}}