Symfony5x Doctrine에서 creadat/updatedAt 자동 설정
/**
* @ORM\Entity(repositoryClass=FooRepository::class)
* @ORM\HasLifecycleCallbacks
*/
class Foo
{
우선 클라스의 선언 부분에 추가@ORM\HasLifecycleCallbacks
선도한다.다음은 방법으로 다음과 같은 내용을 추가한다.
/**
* @ORM\PrePersist
*/
public function setCreatedAtValue()
{
$this->createdAt = new \DateTimeImmutable();
$this->updatedAt = new \DateTimeImmutable();
}
/**
* @ORM\PreUpdate
*/
public function setUpdatedAtValue()
{
$this->updatedAt = new \DateTimeImmutable();
}
setCreatedAtValue()
에서 업데이트updatedAt
는 명명적으로 불편하면 다른 방법으로 준비할 수도 있다setUpdatedAtValue()
.간단한 동작 설명.
@ORM\HasLifecycleCallbacks
요청이 있으면 Doctine은 Enity에 lifecycle call back이 있음을 인식합니다.이것@ORM\PrePersist
과 @ORM\PreUpdate
이 없으면 불러낼 수 없으니 주의하세요.@ORM\PrePersist
personist를 실행하기 전(INSERT 이전)에 호출되었기 때문에 현재 날짜와 시간을 입력하십시오 createdAt
.updatedAt
가 업데이트되기 전(UPDATE 이전)에 호출되었으므로 여기@ORM\PreUpdate
에 현재 날짜를 입력하십시오.이전에 Symfony의 문서Timestampable는 하나의 버튼이었기 때문에 Symfony5의 Timestampable는 순조롭게 작동하지 못하고 매우 복잡하기 때문에 Doctine의 생명주기를 아예 사용하는 것이 가장 좋다.
2021/08/14 추기
Symfony v5.3.6곳make:entity에서 type의 기본값
updatedAt
이므로 상기 예를 datetime_immutable
에서 \DateTime
로 수정합니다.
Reference
이 문제에 관하여(Symfony5x Doctrine에서 creadat/updatedAt 자동 설정), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://zenn.dev/cloned/articles/c77f25c223c5e6ab5a30텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)