当使用Doctrine ODM为文档的id字段设置注释时,您可以指定默认MongoId方法的不同密钥生成策略,如下所示:
/** @ODMDocument(collection="documents") */
class Document
{
/**
* @ODMId(strategy="UUID")
*/
protected $id;
}
这要求您为设置的每个新文档映射指定此策略。 是否可以更改整个应用程序的默认策略? 也许通过连接级别的配置选项?
继承还不够吗?
use DoctrineODMMongoDBMappingAnnotations as ODM;
/** @ODMDocument */
abstract class AbstractDocument
{
/**
* @ODMId(strategy="UUID")
*/
protected $id;
public function getId()
{
return $this->id;
}
}
/** @ODMDocument(collection="MyDocument") */
class MyDocument extends AbstractDocument {}
/** @ODMDocument(collection="AnotherDocument") */
class AnotherDocument extends AbstractDocument {}
然后,您可以:
$myDocument = new MyDocument();
$odm->persist($myDocument);
$odm>flush();
$myDocument->getId();