从onetmany关系中删除一个项.空值而不是移除



我有这些实体

class Centro {   
/* ... */
/**
* @ORMOneToMany(targetEntity=NivelesEscolares::class, mappedBy="centro", cascade={"persist", "remove"}, orphanRemoval=true)
*/
private $nivelesEscolares;
/* ... */
}

Center与NivelesEscolares实体链接到一个onetmany关系。下面是语句

class NivelesEscolares
{
/*...*/
/**
* @ORMManyToOne(targetEntity=AppEntityCentro::class, inversedBy="nivelesEscolares")
*/
private $centro;
}

当我删除一个中心时,学校级别应该被删除,但它变成了null。我已经尝试过了,但它仍然没有删除任何东西。也可以试试onDelete = "CASCADE"但是它没有删除任何东西。我需要你帮我处理onetmany的关系。

onDelete和orphanRemoval的区别如下:

1。orphanRemoval="true"

  • 当拥有侧实体为且不再连接任何其他拥有侧实体时,反向侧实体被删除。不完全是,这使得学说表现得像它不属于其他实体,因此删除它。
  • 在ORM中的实现

2。onDelete="CASCADE"

  • 这将添加On Delete Cascade到DATABASE
  • 的外键列
  • 这个策略有点棘手,但可以是very powerful and fast。(这是一个引用从学说官方教程…但还没有看到更多的解释)
  • ORM必须做更少的工作(与前两种方式相比),因此应该具有更好的性能。如果你想在删除Centro的同时删除NivelesEscolares,那么就像这样使用onDelete而不是orphanRemoval:

    Centro应该看起来像这样:
class Centro {   
/* ... */
/**
* @ORMOneToMany(targetEntity=NivelesEscolares::class, mappedBy="centro", cascade={"persist", "remove"})
*/
private $nivelesEscolares;
/* ... */
}

NivelesEscolares@ORMJoinColumn也使用onDelete,像这样:

class NivelesEscolares
{
/*...*/
/**
* @ORMManyToOne(targetEntity=AppEntityCentro::class, inversedBy="nivelesEscolares")
* @ORMJoinColumn(onDelete="CASCADE")
*/
private $centro;
}
这将迫使教条删除"学校级别",正如你所说的,享受!🙂

最新更新