![](/img/trans.png)
[英]Persist link in One-to-many / many-to-many - Doctrine and Symfony2
[英]Symfony Doctrine Persist Many To One
我在Symfony中堅持與學說的實體關聯時遇到問題。 開門見山:
這個想法是有一個Dossier
實體,它只能有一個Offres
實體,而一個Offre
實體可以有數倍Dossier
。
理想情況下,我希望從雙方(雙邊)訪問這種關系。
我遵循了Doctrine的文檔,並得到了以下YAML配置:
Dossier:
type: entity
table: dossier
id:
id:
type: integer
generator: { strategy: AUTO }
fields:
*a bunch of fields*
manyToOne:
offre:
targetEntity: AppBundle\Entity\Offres
inversedBy: dossiers
cascade: ["persist"]
joinColumn:
name: dossier_offre
nullable: false
對於Offres
:
Offres:
type: entity
table: offres
id:
id:
type: integer
generator: { strategy: AUTO }
fields:
*a bunch of fields*
oneToMany:
dossiers:
targetEntity: AppBundle\Entity\Dossier
mappedBy: offre
cascade: ['persist']
我的控制器以這種方式插入數據(考慮到$ offre是有效的Offre
實體,並且所有使用的方法都存在):
$dossier = new Dossier();
$dossier->setOffre($offre);
$offre->addDossier($dossier);
$em->persist($dossier);
$em->persist($offre);
$em->flush();
如果我嘗試返回$dossier->getOffre();
在持久存儲和刷新之后,數據是正確的並且要約被取消。
但是一旦離開頁面,數據就會丟失。
對於聯系人的其他類型的關系(多對多),我也有這個問題。 在不同的Dossiers
可能有多個Contacts
。
我希望我足夠清楚,以便任何人都可以提前幫助,謝謝!
我實際上解決了自己的問題。
原來,Symfony / Doctrine僅在需要時才初始化實體。 轉儲數據不會加載該實體,但是嘗試訪問twig中的屬性將加載所選的實體。
這非常有效(不會加載所有不必要的字段)。
所以我有點as愧,但這是我曾經嘗試過的方法(在帶有上述控制器的樹枝模板中): {{dump()}}
那不會初始化Offre
實體,但是會返回名稱: {{dump(dossier.offre.name)}}
感謝您的所有幫助!
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.