2016-06-28 62 views
1

我正在開發一個Web應用程序,用戶可以在其中切換希望記錄數據的表。我的意思是,在同一個表中可能有一個測試模式表和另一個測試模式表。例如,我在兩種模式下都有一個tab_article,但是它們中的列是相同的,所以我只想爲它們使用一個實體類,但它將取決於用戶選擇是要將數據放在表中以便產生還是放入測試。在同一個數據庫中使用一個實體symfony類用於2個或多個表

我還計劃讓管理員創建其他模式,這樣我將動態生成任何他創建的模式的表格。

我尋找任何建議。

謝謝你的回答。

+1

你爲什麼不使用不同的數據庫測試和生產,在配置文件中添加條件。 – Developer

+0

謝謝你的回答, 我想過,但我的問題是,我有一些表,這是所有模式,如tab_user例如,所以如果我使用不同的數據庫,如果管理員插入一個用戶和選擇模式產品時,用戶不會在其他模式下創建。 –

回答

0

解決此問題的更簡單的方法是處理Doctrine事件。

簡單聽衆例如:

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

謝謝,我將測試它是否能解決問題。那麼這個函數會改變實體聲明中鏈接表的名字嗎?或者我錯了? –

+0

是的。如果你需要重命名實體表,你只需要添加'_env'前綴。例如'@Entity(name =「_ env_table」)'。在這種情況下,根據'env',它將變成'prod_table'或'test_table' ... – Ziumin

+0

非常棒!謝謝。我正在測試它。我會在之後給出結果。 –

相關問題