简体   繁体   English

您可以为Doctrine ODM设置默认ID策略吗?

[英]Can you set the default ID strategy for Doctrine ODM?

When setting up annotations with Doctrine ODM for the id field of a document you can specify a different key generation strategy that the default MongoId method like so: 使用Doctrine ODM为文档的id字段设置注释时,可以指定默认MongoId方法类似的其他密钥生成策略,如下所示:

/** @ODM\Document(collection="documents") */
class Document
{
    /**
    * @ODM\Id(strategy="UUID")
    */
    protected $id;
}

This requires you to specify this strategy for every new document mapping you set up. 这要求您为设置的每个新文档映射指定此策略。 Is it possible to change the default strategy for your entire application? 是否可以更改整个应用程序的默认策略? Maybe via a configuration option at the connection level? 也许通过连接级别的配置选项?

Isn't the inheritance enough? 继承不够吗?

use Doctrine\ODM\MongoDB\Mapping\Annotations as ODM;

/** @ODM\Document */
abstract class AbstractDocument
{
   /**
   * @ODM\Id(strategy="UUID")
   */
   protected $id;

   public function getId()
   {
      return $this->id;
   }
}

/** @ODM\Document(collection="MyDocument") */
class MyDocument extends AbstractDocument {}

/** @ODM\Document(collection="AnotherDocument") */
class AnotherDocument extends AbstractDocument {}

then you can: 那么你也能:

$myDocument = new MyDocument();
$odm->persist($myDocument);
$odm>flush();
$myDocument->getId();

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM