我并没有要求您帮助我实现代码目的,而是建议如何做我必须做的事情。
几个星期后,我开发了一个基于symfony3框架的Web应用程序,现在,我必须修改我所做的事情,因为我的老板要我打开多个"组的解决方案&# 34 ;.实际上,该组将与数据库相对应,该数据库将是该应用程序的组内容。
我用模式解释:
登录页面 - >登录/密码/组
如果GROUP = A,则数据库= db_group_a(例如) 如果GROUP = B,则数据库= db_group_b(..)
我不知道它是否清楚,但这是我必须要做的事情,我真的不知道如何用Symfony做这件事(简单的PHP,我会很简单,但是Symfony让我问你)。如果你能帮助我,那就太棒了。 谢谢!
答案 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();