Doctrine 2: Enregistrement d'Entité dans une Relation Complexe
J'ai le texte suivant relations à l'intérieur de ma doctrine entités:
FavoriteRecipe
/**
* @ManyToOne(targetEntity="User", inversedBy="favoriteRecipes")
*/
private $user;
/**
* @ManyToOne(targetEntity="Recipe", inversedBy="favoriteRecipes")
*/
private $recipe;
Recette
/**
* @OneToMany(targetEntity="FavoriteRecipe", mappedBy="user")
*/
private $favoriteRecipes;
Utilisateur
/**
* @OneToMany(targetEntity="FavoriteRecipe", mappedBy="user")
*/
private $favoriteRecipes;
Dans un de mes contrôleurs, j'ai le code suivant:
$favoriteRecipe = new \Entities\FavoriteRecipe();
$favoriteRecipe->setRecipe($recipe);
$favoriteRecipe->setUser($user);
$this->_em->persist($favoriteRecipe);
$this->_em->flush();
Mais cela déclenche une exception avec le message suivant:
Une nouvelle entité a été trouvé par une relation qui n'a pas été configuré
cascade persist opérations:
Les entités\Utilisateur@00000000408bd010000000007cb1380e. Explicitement persister le
nouvelle entité ou configurer en cascade persist opérations sur le
relation.
Comment puis-je correctement créer et enregistrer un FavoriteRecipe
entité?
OriginalL'auteur moteutsch | 2011-09-06
Vous devez vous connecter pour publier un commentaire.
Avez-vous mis l'option cascade pour tous vos relationnel entités? Cela se fait par le réglage de la cascade de la propriété pour excample: cascade={"persist", "remove"}
Peut-être cette page:http://www.doctrine-project.org/docs/orm/2.0/en/reference/working-with-associations.html
Ou de l'une de ces vidéos:
http://www.zendcasts.com/many-to-many-with-doctrine-2/2011/03/
http://www.zendcasts.com/one-to-many-with-doctrine-2/2011/03/
Cela dépend du comportement que vous voulez, mais dans votre situation, je pense l'inverse de ce côté. Je dirais essayez-la, et regardez ce qui se fait dans la base de données.
Et j'ajouterais "et de revenir ici pour partager avec vous les conclusions". Les gens vous a aidé, n'oubliez pas d'aider les gens 🙂
OriginalL'auteur Kees Schepers