我是Symfony和Doctrine的新手。Symfony2/Doctrine2 - ManyToOne - 保存反面
我有一個實體「用戶」和一個實體「類型」。一個用戶可以擁有一個喜歡的類型,一個類型可以擁有許多具有該喜好的特定類型的用戶。所以我需要一個(用戶)到一個(類型)的關係。
我實現了它,它工作正常(主要)。但有一件事我不明白。
如果我這樣做,它的工作原理:
$user = new User();
$type = new Type();
$user->setFavoriteType($type);
$em->persist($user);
$em->persist($type);
$em->flush();
的對象生成並存儲到數據庫。而favorite_type_id設置正確。 所以更改擁有方按預期工作。
但是,如果我將用戶添加到反面(僅)並刷新實體管理器,則不會設置favorite_type_id。
$user = new User();
$type = new Type();
$type->getUsers()->add($user); //same with $type->addUser($user);
$em->persist($user);
$em->persist($type);
$em->flush();
這是爲什麼?有沒有理由不從反面工作?我真的必須手動設置嗎?如果我在像「$ user-> setFavoriteType($ this)」這樣的類型實體中操作addUser方法,它就會起作用。但是,這不應該成爲學說的任務嗎?
文檔說
當雙向關聯關係被更新,僅學說雙方對這些變化的一個檢查。這被稱爲該協會的擁有方。
所以它似乎是想要的行爲,是嗎?但爲什麼?由於性能?語義原因?
如果有人能向我解釋或告訴我我做錯了什麼,我會很高興。
有趣的問題,我也很好奇這個邏輯背後的選擇。 – DonCallisto 2014-09-27 08:13:52
http://doctrine-orm.readthedocs.org/en/latest/reference/unitofwork-associations.html – DonCallisto 2014-09-27 08:15:48
你能告訴我們相關的實體嗎? – ReynierPM 2014-09-27 23:07:40