Доктрина 2: Спасение сущности в сложных отношениях - PullRequest
8 голосов
/ 06 сентября 2011

У меня есть следующие отношения в моих доктринальных сущностях:

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();

Но это вызывает исключение со следующим сообщением:

Новый объект был найден в связи, которая не была настроена Для каскадного сохранения операций: Сущности \ User @ 00000000408bd010000000007cb1380e. Явно сохраняются новый объект или настроить каскадные постоянные операции на отношения.

Как правильно создать и сохранить объект FavoriteRecipe?

1 Ответ

7 голосов
/ 06 сентября 2011

Вы установили опцию каскадирования для всех ваших реляционных объектов? Это делается путем установки свойства каскада для excample: cascade = {"persist", "remove"}

Возможно эта страница: http://www.doctrine -project.org / docs / orm / 2.0 / en / reference / working-with-association.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/

...