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