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

问题描述 投票:0回答:1

我正在开发一个Symfony 4 Web项目,并且每个客户端都有一个数据库,因此,在每个请求中,我都必须基于客户端ID连接到数据库。

如何使用主义来手动连接数据库?

MyController:

/**
 * @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 doctrine-orm doctrine symfony4
1个回答
0
投票

您可以使用多个连接和管理员。这里是official symfony documentation

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

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

use Doctrine\ORM\Tools\Setup;
use Doctrine\ORM\EntityManager;

$paths = array('/path/to/entity/mapping/files');

$config = Setup::createAnnotationMetadataConfiguration($paths);
$dbParams = array('driver' => 'pdo_sqlite', 'memory' => true);
$entityManager = EntityManager::create($dbParams, $config);

Entity Manager API documenation

© www.soinside.com 2019 - 2024. All rights reserved.