Doctrine ODM:删除多对多父对象中的引用

Doctrine ODM: delete reference in parent object with many to many

所以我有下一个文件:

/*
 * @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;

因此,当我执行更新角色的补丁请求时,我想设置更新角色拥有的用户列表。我完全发生了,但是当我进入数据库时​​,我没有看到添加到角色用户列表中的用户角色,或者我看到查看我从角色的用户列表中删除的角色。 这是正常行为吗,我必须自己删除这些引用 我做错了什么?

更新:

总是需要写问题来了解我真正想要的是什么...

为了编辑,我使用 symfony 表单。

主要问题是:我们可以参考类似 inversedBy 关系的东西吗? 我希望有机会编辑用户和编辑角色,并且他们彼此删除或添加他们(不)使用的 ID。

目前不可以。一个模型必须拥有一侧或另一侧的关系。

如果您让 User 模型拥有与 Role 的关系,您可以在编辑用户时为用户设置角色。 Role 模型上的 users 属性 可以是反向引用,以显示哪些用户分配了 Role,但您必须使用 owning 引用修改模型才能将更多用户添加到该角色。