2016-12-15 112 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