学说2:双向关系,不拥有的实体将不会持续存在

时间:2012-08-22 10:28:28

标签: php orm doctrine

原则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; 为什么这是可以修复的。

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

1 个答案:

答案 0 :(得分:2)

修改AuthRole实体下的addUser函数:

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

如果使用setter,则遍历整个阵列并在每个阵列上调用setAuthRole($this)