2

教義 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 になります。これはなぜですか、これは修正可能です。

ユーザーにロールを追加すると関係が保存されることはわかっていますが、それは私が望んでいることではありません。

4

1 に答える 1

2

addUserAuthRoleエンティティの下で関数を変更します。

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

セッターを使用する場合は、配列全体をループして、setAuthRole($this)それぞれを呼び出します。

于 2012-08-22T11:29:49.853 に答える