0

全文検索を行うために、sqlite fts テーブル内の (エンティティからの) データのインデックス作成に役立つバンドルを定義しようとしています。

(クックブックに示されているように)構成ファイルを使用して代替接続とエンティティマネージャーを定義できることは知ってappいますが、バンドル構成内でそれが可能かどうか疑問に思っていました-たとえば、doctrineサービスが注入されたサービスを定義することにより、新しい接続をインスタンス化できるようにします。

Sqlite は必須ではありません。任意のデータベース タイプを使用できます (doctrine でサポートされています)。

よろしくお願いします。

4

2 に答える 2

1

複数の永続化レイヤー (ORM、Couch、MongoDB) を処理する方法については、 FOSUserBundleを参照することをお勧めします。あなたは本質的に同じことをしているでしょう。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 に答える