2

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

现在可以很容易地替换 Admin 类中的删除方法,但是批处理操作存在一些问题。在我看来,创建一个子包来修改通用或在 CRUDController 类中创建一个新方法没有多大意义。

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

这会是一个干净的解决方案吗?有点可惜,逻辑传播到这么多地方。:/

干杯马蒂亚斯

4

1 回答 1

7

您可以使用SoftDeleteable 学说行为

安装Gedmo Doctrine2 扩展包

安装和配置捆绑包后,更新您的实体以添加软删除行为:

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;
    }
}

我已经将它与奏鸣曲一起使用并且效果很好

于 2013-07-04T09:56:33.343 回答