使用Doctrine中的DriverManager和QueryBuilder正确测试连接

时间:2014-05-01 23:39:38

标签: php error-handling doctrine query-builder

我们在Silex应用程序中使用DriverManager::getConnection来检索与数据库服务器的连接,以及正确实例化的Configuration类。

我负责返回代码并正确处理连接错误,以便在连接当前关闭时显示用户友好的错误消息,例如。

在我看来,这看起来很简单。但在实际发送查询之前,我无法找到断言连接有效的方法。

以下是构建连接的示例:

use Doctrine\DBAL\Configuration;
use Doctrine\DBAL\DriverManager;
use Doctrine\DBAL\Query\QueryBuilder;

// ... //

public function __construct( $host, $username, $password, $db, $port )
{
    $this->configuration = new Configuration();
        $connectionParams = array(
        'dbname' => $db,
        'user' => $username,
        'password' => $password,
        'host' => $host,
        'port' => $port,
        'driver' => 'pdo_mysql'
    );
        $this->connection = DriverManager::getConnection( $connectionParams, $this->configuration );
}

如果没有有效的连接,则会失败的方法

public function executeQuery( QueryBuilder $queryBuilder )
{
    $query = $queryBuilder->getSql();

    $statement = $queryBuilder->execute( $query );

    return $statement;
}

我主要使用mysqli,您只需执行此类操作,from the mysqli doc

我正在寻找与我们当前工作流程相当的人,并且惊讶于我无法在任何地方获得有关DBAL连接错误处理的任何相关信息...

我相信这意味着我正在寻找错误的东西,并希望我能够在正确的方向上受到指导,因为我必须在明天实施这一点!如果我发现任何相关内容,我会继续我的研究和后续跟进!

谢谢。

1 个答案:

答案 0 :(得分:0)

如果数据库连接不好或消失,Doctrine会抛出某种异常(我不记得是什么,驱动程序可能会有所不同)。

所以你可能想要找到合适的地方来捕捉这些异常并妥善处理它们。