我有一个模式,实体“用户”和“角色”之间的多对多关系映射如下。
角色实体
/**
* @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行
请帮忙。谢谢。
答案 0 :(得分:3)
您应该将mappedBy="roles"
更改为mappedBy="userRoles"
。 “Mapped by”应该指向另一方的属性名称......