簡體   English   中英

Symfony 5 無法為動態數據庫連接自動裝配參數 $Driver

[英]Symfony 5 Cannot autowire argument $Driver for a dynamic database connection

我目前面臨一個問題,我自己解釋。 對於我的項目,我正在嘗試與數據庫建立動態連接(我有 2 個虛擬機,它們具有不同的 IP,但具有相同的標識符和具有 MSSQL 數據庫引擎(SQLSRV)的表)。

我嘗試這樣的事情->

use Doctrine\DBAL\Driver\SQLSrv\Driver;
 /**
 * @Route("/testconnection", name="test_connect")
 */
public function testConnection(Driver $Driver){

    $connectionParams = array(
        'dbname' => 'job',
        'user' => 'sa',
        'password' => 'Lasernet@2020',
        'host' => '192.168.1.34',
        'driver' => 'pdo_sqlsrv',
    );

    $conn = $Driver->connect($connectionParams);
    dd($conn);
}

錯誤信息

無法自動裝配“App\Controller\HomeController:testConnection()”的參數 $Driver:它引用 class “Doctrine\DBAL\Driver\SQLSrv\Driver”,但不存在此類服務。

錯誤信息

但問題是 Symfony 向我發送了一個我發現難以解決/理解的錯誤。 如果有人對我的問題/成功建立與數據庫的動態連接有解決方案。

如果您需要更多信息,請告訴我。

錯誤消息說。 不存在這樣的服務。 您必須在public/services.yaml中將Doctrine\DBAL\Driver\SQLSrv\Driver class 定義為 symfony 服務以自動裝配它。

更新您的public/services.yaml

services:
    
    Doctrine\DBAL\Driver\SQLSrv\Driver:
        autowire: true

但是為什么你要自動裝配這個 class? 您可以獲得相同的行為

public function testConnection(){
    $Driver = new Driver();
    $connectionParams = array(
        'dbname' => 'job',
        'user' => 'sa',
        'password' => 'Lasernet@2020',
        'host' => '192.168.1.34',
        'driver' => 'pdo_sqlsrv',
    );

    $conn = $Driver->connect($connectionParams);
    dd($conn);
}

如果您的連接參數中沒有真正的動態值,例如$connectionParams['dbname'] = 'sqldb'.$i ,最好使用 doctrine dbal 配置並使用$this->getDoctrine()->getConnection('name'); 在您的 controller 中。

Symfony 文檔

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM