2016-09-22 7 views
2

Gedmo\Timestampable 주석을 자동 created_atupdated_at 작업에 사용하는 Symfony 2.8 앱이 있지만 엔티티/행이 처음 생성 될 때 updated_at 열에 동일한 타임 스탬프를 넣는 것으로 보입니다. UPDATE을 사용하면 updated_at 열에 새로운 타임 스탬프가 표시되지만 시작하려면이 값을 비워두기를 원합니다.처음 만들 때 Gedmo Timestampable에서 updated_at null을 유지하려면 어떻게해야합니까?

INSERT에서 created_at 열에는 타임 스탬프가 채워 져야하며 updated_at은 업데이트되지 않았으므로 빈 칸이어야합니다. 열의 첫 번째 업데이트 이후에만 업데이트 시간 값을 가져야합니다.

나는 이것을 예상하여 정확합니까? 내 코드/config에 문제가 있습니까? 또는이 주석은 실제로 디자인에 따라 두 열의 값을 실제로 설정합니까? 내 config.yml

:

... 
stof_doctrine_extensions: 
    default_locale: "%locale%" 
    translation_fallback: true 
    orm: 
     default: 
      translatable: true 
      timestampable: true 
... 

내 엔티티 :

... 
/** 
* An automatic timestamp of the creation. 
* 
* @var \DateTime $createdAt 
* @Gedmo\Timestampable(on="create") 
* @ORM\Column(name="created_at", type="datetime") 
*/ 
public $createdAt; 

/** 
* An automatic timestamp of the updation. 
* 
* @var \DateTime $updatedAt 
* @Gedmo\Timestampable(on="update") 
* @ORM\Column(name="updated_at", type="datetime") 
*/ 
protected $updatedAt; 
... 

표는 DATETIME로 두 개의 열을 정의하고 그들이 디폴트 조항이 없습니다.

답변

2

22 번째 라인 (Gedmo 버전) : "vendor/gedmo/doctrine-extensions/lib/Gedmo/Timestampable/Timestampable.php"파일을 여는 것처럼 볼 수 있듯이 이것은 설계에 의해 수행됩니다 :

/**                                                                   
* @gedmo:Timestampable(on="update")                                                           
* dates which should be updated on update and insert                                                       
*/ 

결국 INSERT는 테이블/레코드의 업데이트와 비슷합니다. 개체가 새로 생성되었는지 아닌지를 알아야 할 경우 "createdAt"에 저장된 날짜와 "updatedAt"에 저장된 날짜 사이에서 검사를 수행 할 수 있습니다.

+0

이제 다음 질문이 제기됩니다.이 동작을 변경하는 방법이 있습니까? – aalaap

+0

버그 추적기에서 Enhancement 티켓을 열 수 있습니다 (또는 그 이상을 지원하는 PR 제공). 또한이 동작을 재정의하는 방법이있을 수도 있지만 Symfony가 리스너에서이를 지원하는지 여부는 알 수 없습니다. 마지막으로, Doctrine 엔티티의 라이프 사이클 메소드를 사용하여 이것을 에뮬레이션 할 수 있다고 생각합니다. – NaeiKinDus

+0

그게 도움이. 감사. – aalaap