2013-04-23 34 views
1

我有我的symfony原则和其他实体正在处理这个,因为他们应该但其中一个不设置任何日期的教条时间戳集。主义时间戳戳扩展不支持

use Doctrine\ORM\Mapping as ORM; 
    use Gedmo\Mapping\Annotation as Gedmo; 
    use Digital\UserBundle\Entity\User; 

    /** 
    * ChallengeScore 
    * 
    * @ORM\Table(name="app_challenges_scores") 
    * @ORM\InheritanceType("JOINED") 
    * @ORM\DiscriminatorColumn(name="type", type="string") 
    * @ORM\DiscriminatorMap({"race" = "Digital\ApplicationBundle\Entity\Race\ChallengeScore", "individual" = "ChallengeScore"}) 
    * @ORM\Entity(repositoryClass="Digital\ApplicationBundle\EntityRepository\ChallengeScoreRepository") 
    */ 
    class ChallengeScore 


    /** 
    * @var \DateTime 
    * 
    * @ORM\Column(name="date_added", type="datetime") 
    * @Gedmo\Timestampable(on="create") 
    */ 
    private $date_added; 

    /** 
    * @var \DateTime 
    * 
    * @ORM\Column(name="date_modified", type="datetime") 
    * @Gedmo\Timestampable(on="update") 
    */ 
    private $date_modified; 


    /** 
    * Set date_added 
    * 
    * @param \DateTime $dateAdded 
    * 
    * @return self 
    */ 
    public function setDateAdded($dateAdded) 
    { 
     $this->date_added = $dateAdded; 

     return $this; 
    } 


    /** 
    * Get date_added 
    * 
    * @return \DateTime 
    */ 
    public function getDateAdded() 
    { 
     return $this->date_added; 
    } 


    /** 
    * Set date_modified 
    * 
    * @param \DateTime $dateModified 
    * 
    * @return self 
    */ 
    public function setDateModified($dateModified) 
    { 
     $this->date_modified = $dateModified; 

     return $this; 
    } 


    /** 
    * Get date_modified 
    * 
    * @return \DateTime 
    */ 
    public function getDateModified() 
    { 
     return $this->date_modified; 
    } 
} 

我在想也许这个配置有继承定义的问题......任何人都可以发现问题吗?

没有错误只是00000保存到数据库(所以没什么)

+0

我会推荐你​​在你的setter方法var_dump你的日期,并确保它正在代谢正确 – Lighthart 2013-04-23 23:55:59

回答

3

DoctrineExtensions例子

你可以看到,有没有setterstimestampable成员,因此,只需要删除setDateAdded()setDateModified()方法

14

不要忘了添加以下内容到你的app/config/services.yml中:

services: 
    gedmo.listener.timestampable: 
     class: Gedmo\Timestampable\TimestampableListener 
     tags: 
      - { name: doctrine.event_subscriber, connection: default } 
     calls: 
      - [ setAnnotationReader, [ '@annotation_reader' ] ] 

这基本上做的是它“监听”是否触发事件来更新/创建数据库中的实体,并设置日期。

我希望这解决了这个问题。

1

我删除从实体类的setter方法,并添加下面的代码到services.yml

gedmo.listener.timestampable: 
    class: Gedmo\Timestampable\TimestampableListener 
    tags: 
     - { name: doctrine.event_subscriber, connection: default } 
    calls: 
     - [ setAnnotationReader, [ @annotation_reader ] ]. 

它的工作对我罚款。