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