0

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

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

Sqlite 不是强制性的,它可以是任何数据库类型(由学说支持)。

在此先感谢您的帮助。

4

2 回答 2

1

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

于 2012-06-01T18:43:56.270 回答
0

据我所知,这是不可能的。此外,数据库连接应集中在 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 定义数据库连接的标准方式。

于 2012-06-01T20:20:05.400 回答