2011-09-06 23 views
8

benim doktrin varlıklar içinde aşağıdaki ilişkileri vardır:Doktrini 2: Karmaşık İlişki içinde Tasarruf Varlık

FavoriteRecipe

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

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

Reçete

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

Kullanıcı

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

Aşağıdaki kod var:

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

Ama bu aşağıdaki iletiyle bir istisna atar:

yeni bir varlık olan bir ilişki aracılığıyla bulunmuştur kaskad kalıcı işlemleri için yapılandırılmamış: Varlıklar \ Kullanıcı @ 00000000408bd010000000007cb1380e. yeni varlığını açıkça sürdürmek veya ilişkisindeki basamaklı devam eden işlemleri yapılandırmak.

Bir FavoriteRecipe varlığını nasıl doğru bir şekilde oluşturabilir ve kaydedebilirim?

cevap

7

Tüm ilişkisel varlıklar için çağlayan seçeneğini ayarladınız mı? Bu excample için kaskad özelliğini ayarlayarak yapılır: kaskad =

{ "kaldırmak", "inat"} Belki bu sayfayı: http://www.doctrine-project.org/docs/orm/2.0/en/reference/working-with-associations.html

Veya bu videolar: 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

yan Kime Derleme seçeneği kaskat seçeneğini ekleyebilir miyim? Sahibi taraf mı, ters tarafı mı? – moteutsch

+0

İstediğiniz davranışa bağlıdır, ancak sizin durumunuzda ters tarafı düşünüyorum. Denemeliyim ve veritabanında ne olduğuna bak. –

+2

Ve ekleyebilirim "ve bulgularınızı paylaşmak için buraya geri dönün". İnsanlar size yardım etti, insanlara yardım etmeyi unutmayın :) – Ninj

İlgili konular