2016-12-15 160 views
0

我有一個定義了索引的文檔。索引未創建

/** @ODM\Document */ 
class Stat 
{ 
    /** @ODM\Id(strategy="NONE", type="int") */ 
    private $id; 

    /** @ODM\Field(type="string") */ 
    private $period; 

    /** @ODM\ReferenceOne(targetDocument="Player") */ 
    private $player; 

    /** @ODM\Field(type="string") @ODM\Index */ 
    private $statType; 

但是,當我查看集合中創建的索引時,唯一的索引是_id。

要保存的文件我做:

$stat = new Documents\Stat(); 

$stat->setId(1); 
$stat->setPlayer($player); 
$stat->setPeriod(1); 
$stat->setStatType('goal'); 

$dm->persist($stat); 
$dm->flush(); 

有別的我不這樣做?

回答

3

在正常ODM使用期間,不會創建索引(也不保證它們是否與映射同步)。

如果您使用的是Symfony,那麼解決問題很簡單,只需從Symfony的控制檯運行doctrine:mongodb:schema:create命令(如果您使用其他框架,請查找與ODM提供的命令相同的命令)。

如果要控制代碼中的索引,可以使用SchemaManager,它提供了一個API來直接控制「模式」(您也可以根據每個文檔控制索引)。獲取它很容易:$sm = $dm->getSchemaManager();

+0

我試過了odm:schema:create,我仍然得到了所有沒有索引的集合。 – Bernardo

+0

您的文檔是否通過命令列出? – malarzm

+0

號我: '創建DBS所有類 創建的集合所有類 所有classes'創建的索引 的文件沒有具體名單 – Bernardo