Ankündigung

Einklappen
Keine Ankündigung bisher.

Propel ORM on-the-fly Erweiterung

Einklappen

Neue Werbung 2019

Einklappen
X
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

  • Propel ORM on-the-fly Erweiterung

    Hi, liebe Community. Wer Propel noch nicht kennt, das soll angeblich einer der schnellsten ORM's (mit Active-Record Pattern) sein, dass es gibt (siehe hier). Das Problem: man benötigt bereits eine bestehende Datenbankstruktur oder muss eine "Schema.xml"-Datei anlegen, mit der man dann die Tabellen erzeugen kann.

    Da ich zuerst dachte, dass Propel die xml-Datei bestimmt direkt in SQL-Code umwandelt, habe ich mir einen "Schema Builder" gebastelt, der die XML-Datei dynamisch erstellen kann. Der funktioniert soweit ich weiß auch einwandfrei und zwar wie folgt:

    PHP-Code:
    $test = new SchemaBuilder('path/to/output''db_name'false, array('defaultIdMethod', array('package' => 'test', [... further db params])));
    $params = array('idMethod' => 'test'); //the params you can give a table
    $references_1 = array(array('local' => 'test''foreign' => 'test')); //references for a foreign key
    $foreignKey_1 = array('foreignTable' => 'test''foreignSchema' => 'test''references' => $references_1);
    $foreignKeys = array($foreignKey_1);
    $additional_elements = array('foreignKeys' => $foreignKeys); //additional elements inside of the table like unique, index, foreignKey etc.
    $table_1 $test->add('table_1', array($params$additional_elements));
    $table_1->column_1(array('test', array('size' => 15)));
    $table_1->column_2(array(1, array('primaryKey' => true))); 
    Das Problem ist, dass in der Dokumentation nur die Möglichkeit angegeben ist, das Schema per Konsolenbefehl in eine Datenbankstruktur umzusetzen. Ich brauch das ganze aber dynamisch, sodass ich die Datenbank automatisch je nach User Input erstellen kann. Im Nachhinein wäre das auch einfacher gegangen, nämlich einfach über die SQL-Statements aber da wusste ich ja noch nicht, dass Propel das Schema nicht direkt einliest

    Jetzt hoffe ich natürlich, dass ich den Builder nicht umsonst gebastelt habe. Kennt sich vielleicht einer mit Propel aus, und weiß wie man die Schema-Datei mittels PHP Code in die entsprechende Datenbank überführt? Wenn das mit Propel per Konsole geht muss es doch auch irgendwie ohne Konsole gehen?

    P.S.: Für diejenigen die sich für den Schema Builder interessieren, hier gibts den Code!
Lädt...
X