原则2:双向关系,在不拥有的基础上增加实体将不会持续


Doctrine 2: bi-directional relation, Adding entity on not owning will not persist

原则2:双向关系,在不拥有的情况下添加实体将不会持久化

class AuthRole
{
    /**
     * @ORM'OneToMany(targetEntity="AuthUser", mappedBy="role", cascade={"persist","detach"})
     * @ORM'JoinColumn(name="role_id", referencedColumnName="id")
     */
    private $authUsers;
}

AuthRole是非拥有方

class AuthUser 
{
    /**
    * @ORM'ManyToOne(targetEntity="AuthRole", inversedBy="authUsers", cascade={"persist","detach"})
    * @ORM'JoinColumn(name="role_id", referencedColumnName="id")
    */
    private $role;
}

AuthUser是拥有方

如果我将用户添加到角色中,则关系将不会保存,并且AuthUser->role为null;为什么这是可以修复的。

我知道当你给用户添加一个角色时,关系会被保存,但这不是我想要的。

在AuthRole实体下修改addUser函数:

public function addAuthUser(AuthUser $authUser)
{
  $authUser->setAuthRole($this); // important line
  $this->authUsers[] = $authUser;
}

如果使用setter,则在整个数组上循环,并在每个数组上调用setAuthRole($this)