我正在尝试定义一个Bundle,它有助于索引sqlite fts表中的一些数据(来自实体),以便进行一些全文搜索。
我知道我可以使用app
配置文件定义备用连接和实体管理器(如食谱中所示),但我想知道是否可以在捆绑配置中执行此操作 - 通过定义,例如,注入了doctrine
服务的服务,以便它可以实例化新连接。
Sqlite不是强制性的,它可以是任何数据库类型(由学说支持)。
提前感谢您的帮助。
答案 0 :(得分:1)
我建议查看FOSUserBundle它们如何处理多个持久层(ORM,Couch,MongoDB)。你基本上会做同样的事情。这只是加载不同配置的问题,具体取决于app / config / config.yml中指定的驱动程序。
答案 1 :(得分:0)
据我所知,这是不可能的。此外,数据库连接应该在app / config.yml中集中管理。
我建议在那里定义连接,并在你的bundle中添加一个配置选项,你可以在其中指定用于索引的东西的连接。
# 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标准方法。