【问题标题】:Can you set the default ID strategy for Doctrine ODM?Doctrine ODM 可以设置默认的 ID 策略吗?
【发布时间】:2012-09-27 04:57:39
【问题描述】:
使用 Doctrine ODM 为文档的 id 字段设置注释时,您可以指定与默认 MongoId 方法不同的密钥生成策略,如下所示:
/** @ODM\Document(collection="documents") */
class Document
{
/**
* @ODM\Id(strategy="UUID")
*/
protected $id;
}
这要求您为您设置的每个新文档映射指定此策略。是否可以更改整个应用程序的默认策略?也许通过连接级别的配置选项?
【问题讨论】:
标签:
php
mongodb
doctrine
odm
【解决方案1】:
继承还不够吗?
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 {}
那么你可以:
$myDocument = new MyDocument();
$odm->persist($myDocument);
$odm>flush();
$myDocument->getId();