Category Archives: Workbench

Criar schema.yml a partir do workbench

Para quem utiliza a ferramenta Workbench para desenhar os modelos da base de dados, e depois não quer ter o trabalho de passar os nomes todos para o schema.yml, pode tirar partido desta script.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
<?php
/*
 *  The MIT License
 *
 *  Copyright (c) 2010 Johannes Mueller <circus2(at)web.de>
 *
 *  Permission is hereby granted, free of charge, to any person obtaining a copy
 *  of this software and associated documentation files (the "Software"), to deal
 *  in the Software without restriction, including without limitation the rights
 *  to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
 *  copies of the Software, and to permit persons to whom the Software is
 *  furnished to do so, subject to the following conditions:
 *
 *  The above copyright notice and this permission notice shall be included in
 *  all copies or substantial portions of the Software.
 *
 *  THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
 *  IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
 *  FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
 *  AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
 *  LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
 *  OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
 *  THE SOFTWARE.
 */


// show errors
error_reporting(E_ALL);

// lets stop the time
$start = microtime(true);


// enable autoloading of classes
require_once('../lib/MwbExporter/Core/SplClassLoader.php');
$classLoader = new SplClassLoader();
$classLoader->setIncludePath('../lib');
$classLoader->register();

// show a simple text box with the output
echo '<textarea cols="100" rows="50">';

    // configure your output
    $setup = array(
        'extendTableNameWithSchemaName' => true
    );

    // create a formatter
    $formatter = new \MwbExporter\Formatter\Doctrine1\Yaml\Loader($setup);
   
    // parse the mwb file
    $mwb = new \MwbExporter\Core\Workbench\Document('data/er.mwb', $formatter);
   
    // show the export output of the mwb file
    echo $mwb->display();
 
echo "</textarea>";

// save as zip file in current directory and use .yml as file endings
echo "<br><br>";
echo $mwb->zipExport(__DIR__, 'yml');

// show some information about used memory
echo "<br><br>";
echo (memory_get_peak_usage(true) / 1024 / 1024) . " MB used";
echo "<br>";

// show the time needed to parse the mwb file
$end = microtime(true);
echo  sprintf('%0.3f', $end-$start) . " sec needed";

Atenção: Não dispensa verificação do código gerado!!!

Links úteis:
Workbench: http://www.mysql.com/downloads/workbench/
Repositório do projecto: git://github.com/johmue/mysql-workbench-schema-exporter.git

Obrigado ao johmue. :P