Symfony多个数据库

时间:2016-05-23 09:38:10

标签: php database symfony

我并没有要求您帮助我实现代码目的,而是建议如何做我必须做的事情。

几个星期后,我开发了一个基于symfony3框架的Web应用程序,现在,我必须修改我所做的事情,因为我的老板要我打开多个"组的解决方案&# 34 ;.实际上,该组将与数据库相对应,该数据库将是该应用程序的组内容。

我用模式解释:

登录页面 - >登录/密码/组

如果GROUP = A,则数据库= db_group_a(例如) 如果GROUP = B,则数据库= db_group_b(..)

我不知道它是否清楚,但这是我必须要做的事情,我真的不知道如何用Symfony做这件事(简单的PHP,我会很简单,但是Symfony让我问你)。如果你能帮助我,那就太棒了。 谢谢!

1 个答案:

答案 0 :(得分:2)

在symfony中,您可以像这样定义多个数据库:

$container->loadFromExtension('doctrine', array(
    'dbal' => array(
        'default_connection' => 'default',
        'connections' => array(
            'default' => array(
                'driver'   => '%database_driver%',
                'host'     => '%database_host%',
                'port'     => '%database_port%',
                'dbname'   => '%database_name%',
                'user'     => '%database_user%',
                'password' => '%database_password%',
                'charset'  => 'UTF8',
            ),
            'group_a' => array(
                'driver'   => '%database_driver2%',
                'host'     => '%database_host2%',
                'port'     => '%database_port2%',
                'dbname'   => '%database_name2%',
                'user'     => '%database_user2%',
                'password' => '%database_password2%',
                'charset'  => 'UTF8',
            ),
            'group_b' => array(
                'driver'   => '%database_driver2%',
                'host'     => '%database_host2%',
                'port'     => '%database_port2%',
                'dbname'   => '%database_name2%',
                'user'     => '%database_user2%',
                'password' => '%database_password2%',
                'charset'  => 'UTF8',
            ),
        ),
    ),

现在,一旦您登录并找到了用户特权的组,您可以在会话中设置该组并将其作为参数添加到与此类似的查询中:

$allowed_db = 'group_a';
$customers = $this->get('doctrine')
            ->getRepository('AcmeCustomerBundle:Customer', $allowed_db)
            ->findAll();
相关问题