当前位置: 首页 > 知识库问答 >
问题:

删除多人主义2关系

徐昊焜
2023-03-14

在一个理论实体中,我有这样的配置:

/**
 * @var \Doctrine\Common\Collections\ArrayCollection
 * @ORM\ManyToMany(targetEntity="PriceRate", cascade={"all"}, orphanRemoval=true)
 * @ORM\JoinTable(name="product_rates",
 *   joinColumns={@ORM\JoinColumn(name="product_id",referencedColumnName="id")},
 *   inverseJoinColumns={@ORM\JoinColumn(name="rate_id",referencedColumnName="id")})
 */
protected $rates;

当我删除实体时,它会尝试首先删除price_rate表,而不是连接的表,因此我会得到以下错误:

$product->removeAllRate(); //it does this: $this->rates->clear();

$em->remove($product);
$em->flush();

共有1个答案

祁俊喆
2023-03-14

在实体中,您还必须指定许多任何关系。这就是原因。示例:

/**
 * @ORM\ManyToMany(targetEntity="Product", mappedBy="rates")
 */
private $products;
 类似资料:
  • 问题内容: 我要删除具有多对多关系的一个站点上的表中的一行。我还想删除该关系另一侧的所有相关行。 例如,假设我有以下表格,并且想从中删除一行。我也想从中删除所有相关的行,当然,也删除其中不再需要的任何行。 我知道如何在查询中连接以上表格。但是我看不到如何删除整个关系中的数据。 注意:关系的两端都实现级联删除。因此,例如,从中删除行将删除中的任何相关行。但是显然,这不会传播到表中。 问题答案: 我认

  • 我的问题:当我删除一个项目实体时,它被从Project表中移除,但是这个项目和标记之间的project_tag表中的关系没有被删除。然后,如果我创建了一个新的项目实体,就会抛出一个异常。 实体: 标签 控制器中操作的完整代码:

  • 问题内容: 我有两个与多对多关联的表。 —数据库片段: 加载 ID 名称 会话 ID 日期 sessionsloads LoadId 的SessionID —hibernate映射片段: 为了从关联表 sessionloads中 删除一个条目,我执行以下代码: 但是,启动后,此代码将保持不变。 删除关联的正确方法是什么? 问题答案: 您需要更新和之间的链接的两端: 实际上,许多开发人员使用防御性方

  • 问题内容: 我正在尝试使用Doctrine QueryBuilder来执行以下SQL查询: 我有这个 但我得到: 错误消息附带的DQL是: 因此,连接似乎完全被省略了。 问题答案: 最好使用IN条件而不是迭代来运行查询。 好处:运行速度更快,无需迭代 缺点:您无法加入preRemove 对于激烈的“放置在哪里”的辩论,如果愿意,可以将其放在控制器中。这完全取决于您。但是,如果您将代码放入专用的学说

  • 我有用户和角色。每个用户可以有许多角色。 我希望有一个批量操作,如删除所有用户角色,但保留用户和角色。那么,如何只截断manytomy表呢? 还有很长的路要走- 我尝试了此操作,但得到了DML操作不支持的异常[更新users.entity.User u SET u.roles=null]

  • 问题内容: 问题: 我 在* 两个实体 A和B 之间 有 多对多关联 。我将 A实体 设置为其 关系 的 所有者 (inverse = true在b.hbm.xml中A的集合上)。 * 当我 删除一个A实体时 , 联接表中的 相应 记录也会被删除 。 当我 删除一个B实体时 , 联接表中的 相应 记录不会被删除 (完整性违反异常)。 - 让我们考虑一些非常简单的 示例 : 文件 a.hbm.xml