2013-04-23 31 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 ] ]. 

它的工作對我罰款。