2014-05-01 14 views
0

我們在我們的Silex應用程序中使用DriverManager::getConnection來檢索與我們的數據庫服務器的連接以及正確實例化的Configuration類。正確使用Doctrine中的DriverManager和QueryBuilder測試連接

例如,如果連接當前處於關閉狀態,我負責重新執行代碼並正確處理連接錯誤,以顯示用戶友好的錯誤消息。

在我的腦海裏,這似乎很簡單。但在實際發送查詢之前,我無法找到任何可用的斷言連接有效的方法。

下面是建立連接的例子:

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周圍的任何地方DB連接錯誤處理任何相關信息......

我認爲,這意味着我要找錯誤的事情和希望,我可以在正確的方向上引導,因爲我必須爲明天實現這個目標!如果我發現任何相關內容,我會繼續我的研究併發布後續跟蹤!

謝謝。

回答

0

如果數據庫連接不好或者消失,Doctrine會拋出某種異常(我不記得是什麼,它在驅動程序之間可能會有所不同)。

所以你可能會想找到合適的地方來捕捉這些異常並很好地處理它們。

+0

是的,它會拋出一個DBALException異常。我更像是一個JavaScript編碼器,我實際上忘記了反斜槓類名稱(\ DBALException),以便用於基本名稱空間而不是當前的名稱空間......這只是愚蠢的。 謝謝! – Mikechaos

相關問題