Symfony 4:手动连接到数据库/创建动态实体管理器



我正在做一个Symfony 4 Web项目,我为每个客户端都有一个数据库,所以,在每个请求中,我都必须根据客户端ID连接到一个数据库。

如何使用原则手动连接到数据库?

我的控制器:

/**
* @Route("/api/log", name="log", methods={"GET"})
*/
public function log(Request $request)
{
$this->denyAccessUnlessGranted(['ROLE_CLIENT','ROLE_ADMIN']);
$clientId = $request->query->get('client_id');

$dbName = 'project_'.$clientId;            
//I have database credentials: $host,$port,$username,$password & $dbName:

$this->getDoctrine()->........

您可以使用多个连接和管理器。这里是官方的symfony文档。

因此,如果您可以手动更改config/packages/doctrine.yaml,您将解决您的问题。

另一种方法是直接与实体管理器合作:

use DoctrineORMToolsSetup;
use DoctrineORMEntityManager;
$paths = array('/path/to/entity/mapping/files');
$config = Setup::createAnnotationMetadataConfiguration($paths);
$dbParams = array('driver' => 'pdo_sqlite', 'memory' => true);
$entityManager = EntityManager::create($dbParams, $config);

实体管理器 API 文档化

最新更新