duanbi3385 2012-10-06 03:12 采纳率: 100%
浏览 92

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

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:

/** @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?

  • 写回答

1条回答 默认 最新

  • duanchan9354 2015-03-12 11:50
    关注

    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();
    
    评论

报告相同问题?

悬赏问题

  • ¥15 微信会员卡等级和折扣规则
  • ¥15 微信公众平台自制会员卡可以通过收款码收款码收款进行自动积分吗
  • ¥15 随身WiFi网络灯亮但是没有网络,如何解决?
  • ¥15 gdf格式的脑电数据如何处理matlab
  • ¥20 重新写的代码替换了之后运行hbuliderx就这样了
  • ¥100 监控抖音用户作品更新可以微信公众号提醒
  • ¥15 UE5 如何可以不渲染HDRIBackdrop背景
  • ¥70 2048小游戏毕设项目
  • ¥20 mysql架构,按照姓名分表
  • ¥15 MATLAB实现区间[a,b]上的Gauss-Legendre积分