我遵循了本教程:http://symfony.com/doc/current/cookbook/doctrine/file_uploads.html#using-lifecycle-callbacks
然而, prePersist 未被触发(但实体被持久化为数据库)。
$media = new Media();
$form = $this->createFormBuilder($media)
->add('file')
->getForm();
if ($request->isMethod("POST")) {
$form->bindRequest($request);
if ($form->isValid()) {
$em = $this->getDoctrine()->getManager();
$em->persist($media);
$em->flush();
}
}
实体: http://dpaste.com/869771/(我刚刚复制并粘贴到我班级的一些代码)
我添加了
die("test");
到上传功能但没有调用。那么什么是错的?有任何想法吗?我正在使用sf 2.1。
答案 0 :(得分:4)
假设您在pastebin中粘贴的代码是准确的,那么问题是您正在尝试混合xml映射和注释映射。您需要使用一种方法或另一种方法。
此链接:http://docs.doctrine-project.org/projects/doctrine-orm/en/latest/reference/events.html
显示了如何将生命周期映射添加到xml文件中。
答案 1 :(得分:1)
然而prePersist没有被解雇......上传功能
因为你在upload()方法上使用 PostPersist()而不是 PrePersist()
而没有被解雇PostPersist在保存后被解雇,而PrePersist在保存之前被解雇! 所以你会在保存之后看到“死”,而不是之前。
此外,使用PrePersist时,您的实体尚未拥有ID,而使用PostPersist时,它将分配一个ID。
答案 2 :(得分:0)
我不确定,但我认为,因为您的媒体实体没有任何映射字段,所以会忽略这些事件。
例如,尝试映射name
字段以查看它是否正常工作
另请阅读Tracking Policies。