我在Symfony2中构建一个应用程序,每个用户都有自己的数据库,这意味着所有用户都拥有自己的一组数据库凭据。用户不知道这些凭证,它们存储在应用程序中。
根据登录的用户,应用程序将检索用户特定的凭据并将数据存储在用户特定的数据库中。
我使用Propel作为ORM,我知道我可以设置多个连接。但我遇到的所有解决方案都需要事先了解连接细节,但我不知道用户将注册和登录。
所以我的问题是:如何启动正确的数据库连接?
答案 0 :(得分:5)
假设您已经连接(如果需要,连接到虚拟数据库),您可以更改连接参数,执行以下操作
// Get current configuration
$config = \Propel::getConfiguration();
// Change DB configuration
$config['datasources']['default']['connection']['dsn'] = 'mysql:host=127.0.0.1;port=3306;dbname=dbname;charset=UTF8';
$config['datasources']['default']['connection']['user'] = 'username';
$config['datasources']['default']['connection']['password'] = 'password';
// Apply configuration
\Propel::setConfiguration($config);
\Propel::initialize();