如何创建doctrine DBAL默认连接?

时间:2012-08-13 08:18:33

标签: php symfony doctrine-orm

我想使用this tutorial为monolog创建自己的处理程序。

现在我的处理程序需要像这样的PDO连接

$logger->pushHandler(new LogHandler(new PDO("mysql:host=$host;dbname=$dbname", $user, $pass)));
$logger->addInfo('My logger is now ready');

然后this guy告诉我将该连接作为服务插入

喜欢这个

doctrine.dbal.default.wrapped_connection:
    factory_service: doctrine.dbal.default_connection
    factory_method: getWrappedConnection
    class: PDO

my.monologhandler.pdo:
    class: sojeans\BackBundle\Monolog\Handler\PDOHandler
    arguments:
        - '@doctrine.dbal.default.wrapped_connection'
    tags:
        - { name: log_handler }

但我得到循环引用错误,所以其他人告诉这样做

  

这里有一个循环引用:你需要创建doctrine.dbal.default_connection服务来创建doctrine.dbal.default.wrapped_connection``(因为它是一个工厂服务),这个服务使用记录器。 / p>

但我不知道该怎么做。

1 个答案:

答案 0 :(得分:1)

尝试向没有调试或分析的学说配置添加新连接:

doctrine:
    dbal:
        connections:
            default:
                driver:   %database_driver%
                host:     %database_host%
                port:     %database_port%
                dbname:   %database_name%
                user:     %database_user%
                password: %database_password%
                charset:  UTF8
            logger:
                driver:   %database_driver%
                host:     %database_host%
                port:     %database_port%
                dbname:   %database_name%
                user:     %database_user%
                password: %database_password%
                charset:  UTF8
                logging:   false
                profiling: false

然后使用新的logger_connection服务:

doctrine.dbal.logger.wrapped_connection:
    factory_service: doctrine.dbal.logger_connection
    factory_method: getWrappedConnection
    class: PDO

my.monologhandler.pdo:
    class: sojeans\BackBundle\Monolog\Handler\PDOHandler
    arguments:
        - @doctrine.dbal.logger.wrapped_connection
    tags:
        - { name: log_handler }

让我知道这是否有效。