我想实现一些自定义删除处理。我们有一些类型的实体只在数据库中被标记为已删除。从数据库中真正删除是由计划的进程完成的。
现在很容易替换Admin类中的delete方法,但是我在批处理操作方面遇到了一些问题。创建子包以修改常规或在我眼中的CRUDController类中创建新方法是没有多大意义的。
所以我倾向于创建一个自定义的ModelManager(基于DoctrineORMAdminBundle)并将业务逻辑放入其中。我找不到关于这部分的任何文档。
这会是一个干净的解决方案吗?这种逻辑在很多地方传播都是一种遗憾。 :/
干杯 的Matthias
答案 0 :(得分:7)
您可以使用SoftDeleteable doctrine behavior
安装Gedmo Doctrine2 extensions bundle
安装并配置捆绑包后,请更新实体以添加软删除行为:
namespace Entity;
use Gedmo\Mapping\Annotation as Gedmo;
use Doctrine\ORM\Mapping as ORM;
/**
* @ORM\Entity
* @Gedmo\SoftDeleteable(fieldName="deletedAt")
*/
class Article
{
# ...
public function getDeletedAt()
{
return $this->deletedAt;
}
public function setDeletedAt($deletedAt)
{
$this->deletedAt = $deletedAt;
}
}
我已经将它与Sonata一起使用了,它运行良好