Sim*_*n H 9 entity one-to-many many-to-one symfony doctrine-orm
我是Symfony和Doctrine的新手.
我有一个实体"用户"和一个实体"类型".一个用户可以拥有一个喜欢的类型,一个类型可以拥有许多具有该特定类型作为收藏的用户.所以我需要一个多(用户)到一个(类型)的关系.
我实现了它,它工作正常(大多数情况下).但有一件事我不明白.
如果我做这样的事情它的作用:
$user = new User();
$type = new Type();
$user->setFavoriteType($type);
$em->persist($user);
$em->persist($type);
$em->flush();
Run Code Online (Sandbox Code Playgroud)
生成对象并将其存储到DB.并且正确设置了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();
Run Code Online (Sandbox Code Playgroud)
这是为什么?有没有理由说它不能从反面起作用?我真的必须手动设置吗?如果我操作类型实体中的addUser方法,如"$ user-> setFavoriteType($ this)",它可以工作.但这不应该是学说的任务吗?
文件说
更新双向关联时,Doctrine仅检查双方中的一方以查找这些更改.这被称为协会的拥有方.
所以这似乎是通缉行为,是吗?但为什么?由于表现?语义原因?
如果有人可以向我解释或告诉我我做错了什么,我会很高兴的.
小智 3
查看有关级联的 Doctrine 文档。。cascade={"persist"}通过添加和清除缓存(重建 Doctrine 的元数据缓存),这应该可以帮助您快速轻松地开始执行您想要执行的操作。
| 归档时间: |
|
| 查看次数: |
2175 次 |
| 最近记录: |