在Symfony2項目中使用了2個數據庫。我需要即時更改第二個數據庫的詳細信息。Symfony2 - 在控制器中使用`setParameter`
有什麼辦法可以在Symfony2的控制器中使用容器setParameter()
?
下面是一段代碼,我需要動態更改數據庫名稱:
$container = $this->container;
$container->setParameter('second_database_host','localhost');
$container->setParameter('second_database_name','test');
$container->setParameter('second_database_user','root');
$container->setParameter('second_database_password','root');
$parameter_bag = $container->getParameterBag();
$service_manager = $container->get('projects_objects.manager');
$object_import = $service_manager->import($service_type));
但上面的代碼提供了錯誤的Impossible to call set() on a frozen ParameterBag.
有沒有從那裏我可以改變這些其他任何方式參數?
正如錯誤所述,更改conf爲時已晚。我的問題是:你是否在運行時發現數據庫設置?或者db已經被定義了?在第二種情況下,您可以從容器中獲得服務,並使用setter方法使用關於哪個db需要使用的服務。我的兩美分 – Matteo
@Matteo:我需要在運行時使用數據庫設置。我無法將其添加到parameter.yml中。在一個使用entitymanager的地方,我創建了新的數據庫連接,並且通過該數據庫連接即時創建了一個新的entitymanager。但我不知道如何爲呼叫服務做到這一點。 – AnkiiG
你已經看到這個http://stackoverflow.com/questions/20805637/symfony2-dynamic-doctrine-database-connections-at-runtime? – Matteo