我正在開發一個Web應用程序,用戶可以在其中切換希望記錄數據的表。我的意思是,在同一個表中可能有一個測試模式表和另一個測試模式表。例如,我在兩種模式下都有一個tab_article,但是它們中的列是相同的,所以我只想爲它們使用一個實體類,但它將取決於用戶選擇是要將數據放在表中以便產生還是放入測試。在同一個數據庫中使用一個實體symfony類用於2個或多個表
我還計劃讓管理員創建其他模式,這樣我將動態生成任何他創建的模式的表格。
我尋找任何建議。
謝謝你的回答。
我正在開發一個Web應用程序,用戶可以在其中切換希望記錄數據的表。我的意思是,在同一個表中可能有一個測試模式表和另一個測試模式表。例如,我在兩種模式下都有一個tab_article,但是它們中的列是相同的,所以我只想爲它們使用一個實體類,但它將取決於用戶選擇是要將數據放在表中以便產生還是放入測試。在同一個數據庫中使用一個實體symfony類用於2個或多個表
我還計劃讓管理員創建其他模式,這樣我將動態生成任何他創建的模式的表格。
我尋找任何建議。
謝謝你的回答。
解決此問題的更簡單的方法是處理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);
}
}
謝謝,我將測試它是否能解決問題。那麼這個函數會改變實體聲明中鏈接表的名字嗎?或者我錯了? –
是的。如果你需要重命名實體表,你只需要添加'_env'前綴。例如'@Entity(name =「_ env_table」)'。在這種情況下,根據'env',它將變成'prod_table'或'test_table' ... – Ziumin
非常棒!謝謝。我正在測試它。我會在之後給出結果。 –
你爲什麼不使用不同的數據庫測試和生產,在配置文件中添加條件。 – Developer
謝謝你的回答, 我想過,但我的問題是,我有一些表,這是所有模式,如tab_user例如,所以如果我使用不同的數據庫,如果管理員插入一個用戶和選擇模式產品時,用戶不會在其他模式下創建。 –