你好symfony的朋友。我正在构建一个需要2个数据库连接的项目。并且它工作得很好,但如果我想通过依赖注入来获取/使用第二个(称为客户)连接而不是$ this-> container-> get('doctrine.dbal.customer_connection');它采用默认连接。我正在尝试使用依赖注入,因为这是使用symfony的新方法,我理解在Symfony的新闻版本中将弃用另一种方式,所以我将我的代码更新为新的代码方式。
我的配置很好用。
config.yml
# Doctrine Configuration
doctrine:
dbal:
default_connection: default
connections:
default:
driver: pdo_mysql
host: '%database_host%'
port: '%database_port%'
dbname: '%database_name%'
user: '%database_user%'
password: '%database_password%'
charset: UTF8
customer:
driver: oci8
host: '%database_host2%'
port: '%database_port2%'
dbname: '%database_name2%'
user: '%database_user2%'
password: '%database_password2%'
charset: UTF8
所以,如果我在控制器中使用下一个代码,它会返回它想要返回的内容,即客户连接。
$connection = $this->container->get('doctrine.dbal.customer_connection');
目前运作良好,我可以获得客户连接。 所以现在,我认为是为这种情况创建一个名为“QueriesCustomer”的服务,更新services.yml并最终更新我想要与服务“QueriesCustomer”一起使用的控制器中的参数作为依赖注入准备使用控制器。
<?php
#AppBundle/Service/QueriesOracle.php
namespace AppBundle\Service;
use Doctrine\DBAL\Connection;
class QueriesOracle
{
/**
* @var Connection
*/
private $oracleDB;
/**
* QueriesOracle constructor.
* @param Connection $oracleDB
*/
public function __construct(Connection $oracleDB)
{
$this->oracleDB = $oracleDB;
}
}
和
services.yml
services:
_defaults:
autowire: true
autoconfigure: true
public: false
AppBundle\Services\QueriesOracle:
class: AppBundle\Service\QueriesOracle
arguments:
- '@doctrine.dbal.customer_connection'
最后是控制器
<?php
namespace AppBundle\Controller;
use AppBundle\Service\QueriesOracle;
...
class AduanasController extends Controller
{
/**
* @Route("/{_locale}/xxx")
* @param Request $request
* @param QueriesOracle $queriesOracle
*/
public function nameOfFunctionAction(Request $request, QueriesOracle $queriesOracle)
{
dump($queriesOracle);die;
}
}
谁能告诉我如何解决这个“问题”?我想通过依赖注入两个连接使用没有问题。
提前谢谢。
答案 0 :(得分:0)
检测到问题....在service.yml AppBundle \ Service&#34; s(需要删除...)&#34; \ QueriesOracle:class:AppBundle \ Service \ QueriesOracle