php - 删除与 EntityManager 的多对多关系的对象部分返回错误

标签 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();

我遇到了 Doctrine 异常

ErrorException: Notice: Undefined index: roles in /media/sf_sandbox/aalcodev/vendor/doctrine/orm/lib/Doctrine/ORM/Persisters/BasicEntityPersister.php line 964 (uncaught exception) at /media/sf_sandbox/aalcodev/vendor/doctrine/orm/lib/Doctrine/ORM/Persisters/BasicEntityPersister.php line 964

请帮忙。谢谢。

最佳答案

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

关于php - 删除与 EntityManager 的多对多关系的对象部分返回错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12955449/

相关文章:

php - 如何从使用 sparqllib 完成的查询中获取 SPARQL 的 ASK 答案?

php - 在 Flashbuilder 中动态填充文本字段

php - 我应该定制一个照片库还是调整一个现有的?

php - ZF2 和 Doctrine 输入过滤器(Unique,ObjectExists),用于具有字段集的新实体和现有实体

php - 如何在同一实体管理器中使用学说从 2 个数据库中检索数据?

javascript - 使用 Laravel 将 HTML 生成为 PDF,并将生成的 PDF 上传到数据库?

symfony - XPath:使用相对路径获取值(PHP、Symfony、DOMCrawler)错误

symfony - 动态更改 FOSUserBundle 的服务参数值

symfony - 在单元测试中使用 FOS OAuth Bundle 授权 API 请求

php - 使用 Symfony 表单上传多个文件