[英]What is the best way to handle routing for CMS-like project in Symfony2
[英]Best Way To Handle Removing Records in Symfony2
我有很多在Symfony2中具有ManyToOne和OneToMany关联的实体。 众所周知,如果您删除一条记录并且它没有在其他表中的关联上设置空值,那么事情就开始变得一团糟。 那么,在Symfony2中删除记录时,在Symfony2中处理将其他表中的值设置为null的最佳方法是什么?
我需要在我的实体中设置什么,以确保它在所有关联中都持续存在。
首先,您可以通过为实体中的joinColumn注释使用onDelete属性为FK手动设置ON DELETE
行为:
/**
* @OneToOne(targetEntity="SomeEntity")
* @JoinColumn(name="some_entity_id", referencedColumnName="id", onDelete="cascade")
*/
private $someEntity;
其次,您始终可以为实体删除事件实现事件侦听器。 例如:
public function preRemove(LifecycleEventArgs $args)
{
$entity = $args->getEntity();
if (!$entity instanceof SomeEntity) {
return;
}
// Here you can do whatever you want before
// entity record is removed from the DB.
}
您可以使用以下链接阅读有关教义事件系统的信息:
它们之间的区别在于,第一种方法适用于数据库层。 换句话说,即使您在控制台中使用原始sql查询删除记录,它也将起作用。 第二个功能更强大,因为在删除实体时您还可以运行任何php代码(例如,您可以发送电子邮件等),但是只有通过学说删除记录时才会触发。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.