저는 ZF2와 Doctrine-Module에서 Doctrine 2를 사용하고 있습니다. 나는 PreUpdate을 필요로 엔티티를 작성했습니다 | PrePersist, 교리는 날짜 허용하지 않기 때문에 | 기본 키에 날짜 시간을 : 나는 날짜 I로 날짜 시간을 설정하면Doctrine HasLifecycleCallbacks PrePersist | PreUpdate가 실행되지 않습니다.
<?php
namespace Application\Entity;
use Doctrine\ORM\Mapping as ORM;
/**
*
* @ORM\Entity
* @ORM\HasLifecycleCallbacks
* @ORM\Table(name="sample")
*/
class Sample
{
/**
*
* @ORM\Id
* @ORM\Column(type="string")
* @var integer
*/
protected $runmode;
/**
*
* @ORM\Id
* @ORM\Column(type="date")
* @var DateTime
*/
protected $date;
public function getRunmode()
{
return $this->runmode;
}
public function setRunmode($runmode)
{
$this->runmode = $runmode;
return $this;
}
public function getDate()
{
return $this->date;
}
public function setDate($date)
{
$this->date = $date;
return $this;
}
/**
*
* @ORM\PreUpdate
* @ORM\PrePersist
*/
protected function formatDate()
{
die('preUpdate, prePersist');
if ($this->date instanceof \DateTime) {
$this->date = $this->date->format('Y-m-d');
}
return $this;
}
}
문제는, 지금 메시지를 받으십시오 :
"Object of class DateTime could not be converted to string"
형식 날짜로 이동하지 않기 때문에 메시지를 받으십시오. 당신이 datetime
로 필드 Sample#date
를 매핑하기 때문에 모든
내 경우에는 'ORM : PrePersist'가 무시됩니다. 서비스 나 다른 서비스를 등록 했습니까? – Ron
@Ron 콜백입니다. 공개이어야하며 메타 데이터에 등록되어야합니다. – Ocramius
감사합니다! 하지만 어떻게 그것을 메타 데이터에 등록합니까? 전에 이것을 본 적이 없습니까? 아니면 아마도 trival일까요? – Ron