【问题标题】:Zend Framework 2 - Doctrine 2 - Created at timestamp fieldZend Framework 2 - Doctrine 2 - 在时间戳字段创建
【发布时间】:2013-06-03 10:30:37
【问题描述】:

我想在ZF2 中创建一个自定义created_at 注释。我找到了(German) tutorial 如何在 Symfony2 中构建这样的注解。

除了prePersist 监听器的注册之外,一切似乎都很容易复制。

Symfony 中的代码是:

services:
created_at_listener:
    class: Scandio\Annotations\Driver\CreatedAtDriver
    tags:
      - {name: doctrine.event_listener, event: prePersist}
    arguments: [@annotation_reader]

有什么建议可以在 Zend 中实现吗?

谢谢!

【问题讨论】:

    标签: php doctrine-orm timestamp zend-framework2 event-listener


    【解决方案1】:

    Thanks to Ocramius 我找到了一个不同的解决方案来创建在时间戳创建的PrePersist

    /**
     * ...
     * @ORM\HasLifecycleCallbacks
     * ...
    */
    class ChangeRequest
    
        ...
    
        /**
         * @ORM\Column(type="datetime", nullable=true)
         * @Form\Attributes({"type":"text"})
         * @Form\Options({"label":"Created at"})
         * @Form\Exclude()
         */
        protected $created_at;
    
        ...
    
        /**
         * @ORM\PrePersist
         */
        public function timestamp()
            {
            if(is_null($this->getCreatedAt())) {
                $this->setCreatedAt(new \DateTime());
            }
            return $this;
        }
    

    【讨论】:

      【解决方案2】:

      更简单的解决方案:

      class ChangeRequest
      {
          public function __construct()
          {
              $this->created_at=new \DateTime();
          }
      
          ...
      
          /**
           * @ORM\Column(type="datetime", nullable=true)
           * @Form\Attributes({"type":"text"})
           * @Form\Options({"label":"Created at"})
           * @Form\Exclude()
           */
          protected $created_at;
      
          ...
      }
      

      没有昂贵的事件功能。

      【讨论】:

        猜你喜欢
        • 2011-12-13
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2012-06-07
        相关资源
        最近更新 更多