所以我有下一份文件:
/*
* @ODM\Document(collection="role", repositoryClass="AppBundle\Document\Repository\RoleRepository")
*/
class Role implements RoleInterface
{
/**
* @var integer $id
*
* @ODM\Id(strategy="INCREMENT")
*/
private $id;
/**
* @var string $name
*
* @ODM\Field(type="string")
*/
private $name;
/**
* @var ArrayCollection $users
*
* @ODM\ReferenceMany(targetDocument="User", mappedBy="roles", cascade={"all"})
*
* @JMS\Accessor(getter="getUsersToJson")
* @JMS\Expose
* @JMS\Type("array<integer>")
*/
private $users;
和
/**
* @ODM\Document(collection="user", repositoryClass="AppBundle\Document\Repository\UserRepository")
*/
class User implements AdvancedUserInterface
{
/**
* @var integer $id
*
* @ODM\Id(strategy="INCREMENT")
* @ODM\Index(unique=true)
*
* @JMS\Expose
* @JMS\Type("integer")
*/
private $id;
/**
* @var ArrayCollection $roles
*
* @ODM\ReferenceMany(targetDocument="Role", inversedBy="users", cascade={"persist", "refresh"})
*
* @JMS\Expose
* @JMS\Type("ArrayCollection<AppBundle\Document\Role>")
*/
private $roles;
因此,当我执行更新角色的补丁请求时,我想设置更新角色所具有的用户列表。我完全出现了,但是当我进入数据库时,我不看到用户中添加到角色的用户列表中的角色,或者我做看到我从角色的用户列表中删除的角色。 这是一个正常的行为,我必须自己删除这些引用 OR 我做错了什么?
更新
始终需要写下问题以了解我真正想要的是什么......
编辑我使用symfony表格。
主要问题是:我们可以参考 inversedBy 关系吗? 我希望有机会编辑用户和编辑角色,他们会相互删除或添加ID,这些ID是他们(不)使用的。
答案 0 :(得分:1)
目前没有,你不能。一个模型必须拥有一方或另一方的关系。
如果User
模型拥有与Role
的关系,则可以在编辑时为用户设置角色。 Role模型上的users
属性可以是反向引用,用于显示用户具有角色分配的内容,但您必须使用拥有引用修改模型,以向角色添加更多用户。