2016-06-28 2 views
1

Ich entwickle eine Webanwendung, in der der Benutzer die Tabelle wechseln kann, wo er die Daten aufzeichnen möchte. Ich meine, es könnte eine Tabelle für den Testmodus und eine weitere für den Prod-Modus in derselben Tabelle geben. Zum Beispiel habe ich einen tab_article in beiden Modi, aber die Spalte in ihnen sind die gleichen, so dass ich nur eine Entity-Klasse für sie verwenden will, aber es hängt von der Wahl des Benutzers entweder die Daten in der Tabelle für prod oder in gehen wird Prüfung.Verwenden Sie eine Einheit symfony Klasse für 2 oder viele Tabellen in der gleichen Datenbank

Ich plane auch, den Administrator zu erlauben, einen anderen Modus zu erstellen, so dass ich dynamisch alle Tabellen für jeden Modus erstelle, den er erstellt.

Ich suche nach irgendeinem Vorschlag.

Vielen Dank für Ihre Antwort.

+1

Warum Sie nicht verwenden verschiedene Datenbanken Test und Produktion, fügt Zustand in der Konfigurationsdatei. – Developer

+0

Vielen Dank für Ihre Antwort, Ich dachte darüber nach, aber mein Problem ist auf der Tatsache, dass ich einige Tabellen haben, die für alle Modi wie der tab_user zum Beispiel so sind, wenn ich verschiedene Datenbanken benutze, wenn der Administrator einen Benutzer einfügt und Der Modus prod ist ausgewählt, der Benutzer wird nicht in anderen Modi erstellt. –

Antwort

0

Der einfachere Weg, dieses Problem zu lösen, ist die Behandlung von loadClassMetadata Doctrine-Ereignis.

Einfach Hörer Beispiel:

class TableEnvRenameListener 
{ 
    private $env; 
    public function __construct($env) 
    { 
     $this->env = $env; 
    } 

    public function loadClassMetadata(LoadClassMetadataEventArgs $eventArgs) 
    { 
     $classMetadata = $eventArgs->getClassMetadata(); 
     $table = $classMetadata->table; 
     $table['name'] = str_replace('_env', $this->env, $table['name']); 
     $classMetadata->setPrimaryTable($table); 
    } 
} 
+0

Danke, ich werde testen, ob es das Problem lösen wird. Dann ändert diese Funktion den Namen der verknüpften Tabelle in der Entity-Deklaration? oder liege ich falsch? –

+0

Ja. Wenn Sie die Tabelle der Entity umbenennen möchten, müssen Sie nur das Präfix '_env' hinzufügen. Zum Beispiel '@Entity (name =" _ env_table ")'. In diesem Fall wird es abhängig von 'env' zu' prod_table' oder 'test_table' ... – Ziumin

+0

Ausgezeichnet! Danke. Ich teste es jetzt. Ich werde das Ergebnis danach geben. –

Verwandte Themen