2011-09-06 4 views
8

내 교리 개체 내에서 다음과 같은 관계가 있습니다교리 2 : 복잡한 관계에 저장 엔티티

FavoriteRecipe

/** 
* @ManyToOne(targetEntity="User", inversedBy="favoriteRecipes") 
*/ 
private $user; 

/** 
* @ManyToOne(targetEntity="Recipe", inversedBy="favoriteRecipes") 
*/ 
private $recipe; 

레시피

/** 
* @OneToMany(targetEntity="FavoriteRecipe", mappedBy="user") 
*/ 
private $favoriteRecipes; 

사용자

을내 컨트롤러 중 하나에서
/** 
* @OneToMany(targetEntity="FavoriteRecipe", mappedBy="user") 
*/ 
private $favoriteRecipes; 

나는 다음과 같은 코드가 있습니다

$favoriteRecipe = new \Entities\FavoriteRecipe(); 
$favoriteRecipe->setRecipe($recipe); 
$favoriteRecipe->setUser($user); 
$this->_em->persist($favoriteRecipe); 
$this->_em->flush(); 

을하지만 이것은 다음과 같은 메시지와 함께 예외가 발생합니다 :

새로운 엔티티가 있던 관계를 통해 발견되었다 구성되지 않음 은 지속 작업을 계단식으로 연결합니다. 엔티티 \ 사용자 @ 00000000408bd010000000007cb1380e. 명시 적으로 새 엔터티 유지 또는 계단식 지속 작업 관계를 구성하십시오.

FavoriteRecipe 엔티티를 올바르게 만들고 저장할 수 있습니까?

답변

7

모든 관계형 엔티티에 대해 계단식 옵션을 설정 했습니까? 이것은 excample의 캐스케이드 속성을 설정하여 수행됩니다 폭포 =

을 { "제거", "계속"} 어쩌면이 페이지 : http://www.doctrine-project.org/docs/orm/2.0/en/reference/working-with-associations.html

또는이 동영상 : http://www.zendcasts.com/many-to-many-with-doctrine-2/2011/03/ http://www.zendcasts.com/one-to-many-with-doctrine-2/2011/03/

+1

측면으로 협회는 케스케이드 옵션을 추가합니까? 소유 측면 또는 반대 측면? – moteutsch

+0

그것은 당신이 원하는 행동에 달려 있지만 상황에 반비례한다고 생각합니다. 나는 그것을 시험해보고 데이터베이스에서 어떤 일이 일어나는지 살펴볼 것이다. –

+2

그리고 나는 "당신을 발견 한 것을 나누기 위해 여기로 돌아와"라고 덧붙일 것입니다. 사람들은 당신을 도왔습니다. 사람들을 돕는 것을 잊지 마십시오. :) – Ninj

관련 문제