使用EntityManager删除多对多关系的对象部分会返回错误

时间:2012-10-18 13:06:54

标签: php symfony doctrine-orm

我有一个模式,实体“用户”和“角色”之间的多对多关系映射如下。

角色实体

/**
 * @ORM\ManyToMany(targetEntity="User", mappedBy="roles", cascade={"persist", "remove"})
 */
protected $users;

和用户实体

/**
 * @ORM\ManyToMany(targetEntity="Role", inversedBy="users", cascade={"persist", "remove"})
 * @ORM\JoinTable(name="users_roles")
 * 
 * @var ArrayCollection $userRoles
 */
protected $userRoles;

当我尝试使用以下代码删除角色对象时,

$role = $em->getRepository('ACMEDefaultBundle:Role')->find($id);
$em->remove($role);
$em->flush();

我得到了一个学说例外

  

ErrorException:注意:未定义的索引:/ media / sf_sandbox / aalcodev /中的/media/sf_sandbox/aalcodev/vendor/doctrine/orm/lib/Doctrine/ORM/Persisters/BasicEntityPersister.php第964行(未捕获的异常)中的角色vendor / doctrine / orm / lib / Doctrine / ORM / Persisters / BasicEntityPersister.php第964行

请帮忙。谢谢。

1 个答案:

答案 0 :(得分:3)

您应该将mappedBy="roles"更改为mappedBy="userRoles"。 “Mapped by”应该指向另一方的属性名称......