Symfony学说捕获连接异常



我正在处理Symfony 5项目,我需要实例化一个新的(动态(类,并向它传递一个数据库连接(如果存在(:

$var = "name-of-my-connection";
$this->container->get('doctrine')->getManager($var);

并不是所有这些类都需要连接,在这种情况下,doctrine.yaml中没有这个特定类的db连接。我需要捕获此错误:名为"我的连接名称"的条令ORM管理器不存在。

  • 我该怎么做
  • 我能得到可用连接的列表并在该列表上进行检查吗

谢谢。

要捕获此错误,可以捕获抛出的异常。在这种情况下,您应该捕获InvalidArgumentException。

try{
$nonExistentManager = $this->getDoctrine()->getManager('foo');
} catch (InvalidArgumentException $e) {
//The foo manager does not exist, do something
//Redirect ?
}

如果您正在搜索可用经理的列表,则可以使用getManagers方法。这将返回一个管理器数组列表。这个数组的关键字是可用的名称:

$managers = $this->getDoctrine()->getManagers();
dd($managers);

该代码返回如下内容:

array:1 [▼
"default" => DoctrineORMEntityManager {#320 …11},
"foo" => DoctrineORMEntityManager {#321 …12},
"bar" => DoctrineORMEntityManager {#322 …12}
]

最新更新