2014-09-30 33 views
0

我很少遇到很多关系问题。 我想创建用户时设置默认实体。Symfony 2默认值为许多到很多

例如,我有两个实体。 用户和项目(用户可以有很多项目,项目可以有很多用户)

在我的数据库中我有ID = 1的项目;

现在,当我创建新用户,我不选择任何项目,我想检查它在我的用户实体。我不知道如何获得Project类的实例,其中id = 1?

我必须理论经理或类似的东西吗? 有人可以帮我吗?

我想在没有控制器的实体中做到这一点。

为PrePersist事件

但我怎么能得到的instanceof在用户实体ID = 1的项目?

回答

0

使用PrePersist

/** 
* @ORM\PrePersist() 
*/ 
public function prePersist(LifecycleEventArgs $args) { 
    $em = $args->getEntityManager(); 
    $entity = $args->getEntity(); //User entity 
    if ($entity->getProject() == NULL) { //this would check if Project is empty, meaning no project was selected upon creation of the user and associate project with id = 1 
     $project = $em->getRepository('YourBundle:Project')->find(1); //Project Entity 
     $entity->setProject($project); 
    } 
} 
+1

一个更好的解决办法应该是增加一个LifecycleCallback的实体,为PrePersist事件。有了它,我们可以保持控制器清洁并将逻辑移动到对象中。但是你的解决方案仍然是功能性的。 – theofabry 2014-09-30 22:34:27

+0

感谢您的回答。 我想在没有控制器的实体中做到这一点。 >为PrePersist事件 但是我怎样才能得到id = 1的项目在用户实体的实例? – Micchaleq 2014-10-01 09:19:49

+0

@Micchaleq修改了我的答案 – Splendonia 2014-10-01 14:04:12