我试图将基本上存储文档创建日期的代码放在同一个文档文件上(我看过很多教程,在services.xml文件等中注册了一个监听器。我不希望这样……我希望所有代码都在同一页上)。
所以基本上我的文档文件名为Driver.php。这是我正在使用的代码:
use Doctrine'ODM'MongoDB'Mapping'Annotations as MongoDB;
use Doctrine'ORM'Mapping as ORM;
/**
* @MongoDB'Document(repositoryClass="St'AppBundle'Repository'DriverRepository", requireIndexes=true)
* @ORM'HasLifecycleCallbacks()
*/
class Driver
{
..
/**
* @MongoDB'int
* @MongoDB'Index
*/
protected $createdAt;
/**
* Set createdAt
*
* @param int $createdAt
* @return Driver
*/
public function setCreatedAt($createdAt)
{
$this->createdAt = $createdAt;
return $this;
}
/**
* Get createdAt
*
* @return int $createdAt
*/
public function getCreatedAt()
{
return $this->createdAt;
}
..
/**
* @ORM'PrePersist
*/
public function storeDateCrated()
{
$this->createdAt = new DateTime();
}
}
这就是我所要做的一切:
/**
* @MongoDB'PrePersist
*/
public function storeDateCrated()
{
$date= new 'DateTime();
$this->createdAt = $date->getTimestamp();
}
我删除了这条
use Doctrine'ORM'Mapping as ORM;
尽管这并没有真正的关联。。这段代码是基于我继承的一个项目(来自symfony专家……我对symfony一无所知)。。问题是,当我在整个代码库中搜索PrePersist
时,我一无所获。。但后来我通过运行在所有以前的提交中搜索该术语
git log -SPreCommit // general way: git log -Sword when searching for "word"
这给了我一个所有使用了preCommit的提交哈希的列表。。我打开其中一个提交,发现使用了这种语法。。瞧!
您使用的是DoctrineORM的注释。这只适用于关系数据库,如MySql、postgreSql。相反,使用这个:
use Doctrine'ODM'MongoDB'Mapping'Annotations'HasLifecycleCallbacks;
/**
* @HasLifecycleCallbacks()
*/
class Driver
{