2011-09-06 21 views
8

Tengo las siguientes relaciones dentro de mis entidades doctrina:Doctrina 2: Ahorro de la entidad en relación compleja

FavoriteRecipe

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

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

Receta

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

usuario

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

En una de mis controladores Tengo el siguiente código:

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

Pero esto produce una excepción con el siguiente mensaje:

Una nueva entidad se encuentra a través de una relación que era no configurado a las operaciones de persistencia en cascada: Entidades \ Usuario @ 00000000408bd010000000007cb1380e. Persista explícitamente la nueva entidad o configure las operaciones de persistencia en cascada en la relación .

¿Cómo puedo crear y guardar correctamente una entidad FavoriteRecipe?

Respuesta

7

¿Ha establecido la opción de cascada para todas sus entidades relacionales? Esto se hace mediante el establecimiento de la propiedad en cascada para excample: cascade = { "persistir", "eliminar"}

Quizás esta página: http://www.doctrine-project.org/docs/orm/2.0/en/reference/working-with-associations.html

O estos videos: 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

Para qué lado de la asociación ¿agrego la opción de cascada? ¿El lado dueño o el lado inverso? – moteutsch

+0

Depende del comportamiento que desee, pero en su situación creo que es al revés. Yo diría que lo intenté, y mire lo que sucede en la base de datos. –

+2

Y agregaría "y vuelve aquí para compartir tus hallazgos". La gente te ayudó, no te olvides de ayudar a la gente :) – Ninj

Cuestiones relacionadas