Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/google-apps-script/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Symfony 我可以在捆绑配置中定义新的连接/实体管理器吗?_Symfony_Doctrine Orm - Fatal编程技术网

Symfony 我可以在捆绑配置中定义新的连接/实体管理器吗?

Symfony 我可以在捆绑配置中定义新的连接/实体管理器吗?,symfony,doctrine-orm,Symfony,Doctrine Orm,我试图定义一个Bundle,它可以帮助索引sqlite fts表中的一些数据(来自实体),以便进行全文搜索 我知道我可以使用appconfig文件(如烹饪书中所示)定义备用连接和实体管理器,但我想知道是否可以在bundle配置中这样做-例如,通过定义一个注入了doctor服务的服务,以便它可以实例化一个新连接 Sqlite不是强制性的,它可以是任何数据库类型(受条令支持) 提前感谢您的帮助。我建议您看看它们如何处理多个持久层(ORM、Coach、MongoDB)。你基本上也在做同样的事情。这只是

我试图定义一个Bundle,它可以帮助索引sqlite fts表中的一些数据(来自实体),以便进行全文搜索

我知道我可以使用
app
config文件(如烹饪书中所示)定义备用连接和实体管理器,但我想知道是否可以在bundle配置中这样做-例如,通过定义一个注入了
doctor
服务的服务,以便它可以实例化一个新连接

Sqlite不是强制性的,它可以是任何数据库类型(受条令支持)


提前感谢您的帮助。

我建议您看看它们如何处理多个持久层(ORM、Coach、MongoDB)。你基本上也在做同样的事情。这只是根据app/config/config.yml中指定的驱动程序加载不同配置的问题。

据我所知,这是不可能的。此外,应在app/config.yml中集中管理数据库连接

我建议在这里定义连接,并在bundle中添加一个配置选项,您可以在其中指定用于索引的wich连接

# app/config.yml
doctrine:
    dbal:
        default_connection:   default
        connections:
            default:
                dbname:               database
                host:                 localhost
                user:                 user
                password:             secret
                driver:               pdo_mysql
            my_data_index:
                dbname:               database
                driver:               pdo_sqlite

# configuration option of you bundle
acme_indexer:
    connection: my_data_index
然后,在捆绑包中,您可以读取此配置选项并获取连接/实体管理器,并将其注入索引服务

编辑:

您确实可以在捆绑包中以编程方式创建自定义连接

$params =   array(
    'driver'    =>'pdo_sqlite',
    ....
);

$factory = $container->get('doctrine.dbal.connection_factory')
$connection = $factory->createConnection($params);

但正如我之前所说的,这是一种不好的做法,因为你会逃避symfony standart定义数据库连接的方法。

你看过WebProfilerBundle吗?它使用sqlite,所以它可以满足您的需要。我确实这样做了,但显然太快了。让我们再次深入代码…是
Profiler
服务(在
HttpKernel
中)从头开始创建和管理Sqlite DB。。。