1。
2。
我有这些实体
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;
}
这将迫使教条删除"学校级别",正如你所说的,享受!🙂