2014-09-30 38 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