2011-09-06 10 views
8

Mam następujące relacje w moim podmiotów naukąDoctrine 2: Zapisywanie Podmiot złożony związek

FavoriteRecipe

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

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

Przepis

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

użytkownika

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

W jednym z moich kontrolerów Mam następujący kod:

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

Ale to zgłasza wyjątek z następującym komunikatem:

Nowa jednostka została znaleziona przez związek, który był nie skonfigurowano do kaskadowych operacji utrwalania: Entities \ User @ 00000000408bd010000000007cb1380e. Jawnie zachowaj nowy obiekt lub skonfiguruj kaskadowe operacje utrwalania na relacji .

Jak poprawnie utworzyć i zapisać encję FavoriteRecipe?

Odpowiedz

7

Czy ustawiłeś opcję kaskady dla wszystkich swoich jednostek relacyjnych? Odbywa się to poprzez ustawienie właściwości kaskadowego dla excample: kaskadowy = { "utrzymywać", "usuń"}

Może to strona: http://www.doctrine-project.org/docs/orm/2.0/en/reference/working-with-associations.html

Albo te filmy: 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

Aby której stronie czy dodaję opcję kaskady? Strona posiadania lub strona odwrotna? – moteutsch

+0

To zależy od zachowania, które chcesz, ale w twojej sytuacji myślę, że odwrotna strona. Powiedziałbym, spróbuj i zobacz, co dzieje się w bazie danych. –

+2

I dodałbym "i wróć tutaj, aby podzielić się twoimi odkryciami". Ludzie ci pomogli, nie zapomnij pomóc ludziom :) – Ninj