3

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

角色实体

/**
 * @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/vendor/doctrine /media/sf_sandbox/aalcodev/vendor/doctrine/orm/lib/Doctrine/ORM/Persisters/BasicEntityPersister.php 第 964 行(未捕获的异常)中的角色/orm/lib/Doctrine/ORM/Persisters/BasicEntityPersister.php 第 964 行

请帮忙。谢谢你。

4

1 回答 1

3

您应该更改mappedBy="roles"mappedBy="userRoles". “映射者”应该指向对方的属性名称......

于 2012-10-18T13:50:07.933 回答