2012-06-01 18 views
0

我想要定義一個Bundle,它可以幫助索引sqlite fts表中的一些數據(來自一個實體),以便做一些全文搜索。我可以在Bundle配置中定義新的連接/實體管理器嗎?

我知道我可以使用app配置文件(如食譜中所示)來定義備用連接和實體管理器,但我想知道是否可以在包配置中這樣做 - 例如定義服務注入doctrine服務,以便它可以實例化一個新的連接。

Sqlite不是強制性的,它可以是任何數據庫類型(由doctrine支持)。

在此先感謝您的幫助。

+0

你看看WebProfilerBundle嗎?它使用sqlite,所以它可以滿足你的需求。 – Sgoettschkes

+0

我確實做了,但顯然太快了。讓我們再次潛入代碼中...... – ant1j

+0

它是從頭開始創建和管理Sqlite數據庫的'Profiler'服務(在HttpKernel內)...... – ant1j

回答

1

我會建議看看FOSUserBundle他們如何處理多個持久層(ORM,Couch,MongoDB)。你基本上會做同樣的事情。這只是根據app/config/config.yml中指定的驅動程序加載不同配置的問題。

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 

然後在你的包中,你可以讀取這個配置選項並獲得連接/實體管理器並將它注入到索引服務中。

編輯:

可以肯定programaticly組合中的

$params = array(
    'driver' =>'pdo_sqlite', 
    .... 
); 

$factory = $container->get('doctrine.dbal.connection_factory') 
$connection = $factory->createConnection($params); 

創建自定義的連接,但正如我以前說過這是不好的做法,因爲你會逃避定義的symfony的非標準方式數據庫連接。

相關問題