使用SonataAdminBundle对实体进行自定义删除处理

时间:2013-07-04 09:37:41

标签: symfony sonata-admin symfony-sonata

我想实现一些自定义删除处理。我们有一些类型的实体只在数据库中被标记为已删除。从数据库中真正删除是由计划的进程完成的。

现在很容易替换Admin类中的delete方法,但是我在批处理操作方面遇到了一些问题。创建子包以修改常规或在我眼中的CRUDController类中创建新方法是没有多大意义的。

所以我倾向于创建一个自定义的ModelManager(基于DoctrineORMAdminBundle)并将业务逻辑放入其中。我找不到关于这部分的任何文档。

这会是一个干净的解决方案吗?这种逻辑在很多地方传播都是一种遗憾。 :/

干杯 的Matthias

1 个答案:

答案 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一起使用了,它运行良好