2013-06-27 59 views
0

我必須爲用戶每天創建集合,以便每天他們註冊,因此如果我有5個用戶和2個註冊日期2013-03-02和3個已註冊2013- 03-03我將有2個集MongoDB Doctrine ODM在運行時更改文檔的集合名稱

用戶在一個YML文件中聲明,沒有收集

在項目中,我通過CLI像這樣

 foreach($arUsers as $key=>$arUser) 
    { 

    $collection_name = "day_".$arUser['date']; 


    $user = new User(); 

    /* Change the collection name to be dynamic */ 
    $OdmMetaData = MeltApplication::getDocumentManager()->getClassMetaData(get_class($user)); 
    $OdmMetaData->setCollection($collection_name); 

    $user->setUserId($arUser['user_id']); 
    $user->setEmail($arUser['email']); 
    .... 

    $this->getDocumentManager()->persist($user); 
    $this->getDocumentManager()->flush(); 
    } 

問題做一個進口的是,當我在mongoDB中查看只看到一個名爲day_2013- 03-03「這是最後的日期,如果我設置了MeltApplication :: getDocumentManager() - > flush();在foreach結束聲明之後,我應該把它保存在03-02的第一個集合中。

是否有任何選項可以做到這一點,將它們分開保存?

感謝

回答

0

,唯一的解決辦法是重新初始化documentManager

+0

你是怎麼做到的? – PMoubed

0
$data = $odm->getClassMetadata('NameEntity'); 
$data->setCollection($collectionName); 

這就是答案。

相關問題