Clansuite Community Forum

 
Willkommen Gast. Bitte einloggen oder registrieren.
Haben Sie Ihre Aktivierungs E-Mail übersehen?

Einloggen mit Benutzername, Passwort und Sitzungslänge
 
Seiten: [1]   Nach unten
  Drucken  
Autor Thema: Erstellung der Doctrine Models  (Gelesen 622 mal)
0 Mitglieder und 1 Gast betrachten dieses Thema.
paulbr
Developer
*****
Offline Offline

Beiträge: 126


« am: Oktober 05, 2010, 10:53:32 »


Ich hatte mir mal nachfolgene function in die doctrine.core.php mit eingebaut.
Vielleicht könnt ihr ja was anfangen damit  Zwinkernd

Grund:
  Zum einen waren nicht ale Tabellen als Model generiert, zum anderen hatten diese
  nach Aufruf von: Doctrine_Core::generateModelsFromDb() immer folgende Angaben:

 * @package    ##PACKAGE##
 * @subpackage ##SUBPACKAGE##
 * @author     ##NAME## <##EMAIL##>

Mit nachstehender function kann man das korrekt einstellen, inkl. dem generieren der Tables.
Wenn die Relationen in der DB angegeben sind, werden diese in die models klassen
eingetragen und müssen nicht manuell nachgetragen werden.
Ich werde das bei gelegenheit mal ausprobieren.

Code:
    /**
     * Generate Models from DB
     */
    public static function generateModelsDb( $path, $conf )
    {
        $dsn = sprintf('%s://%s:%s@%s/%s',
                            $conf['type'],
                            $conf['username'] ,
                            $conf['password'],
                            $conf['host'],
                            $conf['name']
        );

        $doctrineOptions = array(
                #'packagesPrefix' => 'Plugin',
                #'packagesPath' => '',
                #'packagesFolderName' => '',
                #'suffix' => '.php',

                'generateTableClasses' => true,
                'generateBaseClasses' => true,

                'baseClassesDirectory' => 'generated',
                'baseClassPrefix' => 'Base',
                'baseClassName' => 'Doctrine_Record',
                'baseTableClassName' => 'Doctrine_Table',
                'classPrefix' => 'db_',
                'classPrefixFiles' => false,

                'pearStyle' => false,
                'phpDocPackage' => 'Clansuite',
                'phpDocSubpackage' => 'Database',
                'phpDocName' => 'Clansuite',
                'phpDocEmail' => 'support at clansuite dot com'
        );

        Doctrine_Core::generateModelsFromDb( $path, $conf, $doctrineOptions);

    }

Wenn classPrefixFiles = false gesetzt wird,
                                werden die Klassen als CsUsers.php + BaseCsUsers.php generiert
Wenn classPrefixFiles = true gesetzt wird und z.B. 'classPrefix' => 'db_',
                                werden die Klassen als db_CsUsers.php + db_BaseCsUsers.php generiert

Aufruf dann mit: Clansuite_Doctrine::generateModelsDb( ROOT.'doctrinemodels', self::$config['database'] );

Parameter: Angabe des Pfades wohin die Models gespeichert werden sollen + DB daten aus der $config.
Der Subordner 'generated' muss nicht existieren, er wird mit angelegt.


gruss
paul
Gespeichert
Jens-A. Koch
Maintainer
*
Offline Offline

Beiträge: 574

One-Man Team


« Antworten #1 am: Oktober 06, 2010, 12:05:05 »

Hallo Paul,

bevor wir Dinge doppelt bearbeiten, probier mal bitte "index.php?mod=doctrine&sub=admin".
Das ist das Modul für die Verwaltung von Doctrine Models - der Core sollte dafür nicht unbedingt geändert werden. Die entsprechende Datei ist "modules/doctrine/controller/doctrine.admin.php".
Du findest dort in Zeile 148ff. die Methode getDoctrineOptions() mit den Settings, die Du auch in die doctrine.core.php eingebaut hast.

Das Modul ist zur Generierung bzw. Regenerierung der unterschiedlichen Datenbankbeschreibungen gedacht. Ich hatte dort angefangen die folgenden Möglichkeiten / Actions bereitzustellen:

1. DB » Models
2. DB » YAML
3. Models » SQL
4. Models » YAML
5. YAML » Models

Wenn Du die Zeit hast, dann schau Dir das bitte mal an.
Gespeichert

Keine Supportanfragen per PN oder Mail. Fragen bitte nur im Forum stellen (Wie man Fragen richtig stellt).
paulbr
Developer
*****
Offline Offline

Beiträge: 126


« Antworten #2 am: Oktober 06, 2010, 12:22:25 »

Hallo Jens,

da war ich schonmal drinnen, im Adminbereich auf der Doctrine Seite, aber die Doctrine Links (TAB)
funktionieren nicht. Ich werde da jedesmal beim klicken aus Clansuite rausgeworfen.

Deshalb hab ich da auch noch nie tiefer nachgeforscht, dachte das nur das Design soweit steht.

gruss
paul
Gespeichert
Jens-A. Koch
Maintainer
*
Offline Offline

Beiträge: 574

One-Man Team


« Antworten #3 am: Oktober 06, 2010, 12:36:53 »

Das mit den Links liegt an an der buildUrl() Funktion -  da is irgendwo ein Bug drin.
Ich muss da nochmal ran.

Ansonsten einfach mal "index.php?mod=doctrine&sub=admin&action=*actionname (ohne action_)*
um wenigstens die Actions ausprobieren zu können.
Teilweise läuft das jedenfalls schon.
Gespeichert

Keine Supportanfragen per PN oder Mail. Fragen bitte nur im Forum stellen (Wie man Fragen richtig stellt).
paulbr
Developer
*****
Offline Offline

Beiträge: 126


« Antworten #4 am: Oktober 06, 2010, 12:52:51 »

ok

die Links auf den Tabs sind mod-rewrite links:
   /doctrine/admin/db2models

die werden nicht umgesetzt, auch nicht wenn ich mod-rewrite in der $config aktiviere.


Gespeichert
Jens-A. Koch
Maintainer
*
Offline Offline

Beiträge: 574

One-Man Team


« Antworten #5 am: Oktober 06, 2010, 07:48:09 »

Die Links der Modulenavigation sollten nun laufen.
Das Problem bestand darin, dass nicht diese Links fehlerhaft waren,
sondern die Methode redirectToReferer() nochmals buildURL() auf einer fertigen URL aufgerufen hat. Also die Action wird ausgeführt, dann kommt der Redirect.

Ob die einzelnen Doctrine Commands noch stimmen, muss ich jetzt mal prüfen, die gehören möglicherweise zu einer älteren Doctrine Version und müssen aktualisiert werden.

Die Modelerstellung aus der DB läuft, ebenso die YAML-Schema Erstellung.
Der Zielordner ist ROOT . '/doctrine'.
Gespeichert

Keine Supportanfragen per PN oder Mail. Fragen bitte nur im Forum stellen (Wie man Fragen richtig stellt).
Seiten: [1]   Nach oben
  Drucken  
 
Gehe zu:  


Powered by SMF 1.1.16 | SMF © 2006-2009, Simple Machines

Google visited last this page Mai 15, 2012, 02:07:29