我正在做一个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 文档化