2013-12-16 130 views
0

我正在使用DoctrineExtensions和StofDoctrineExtensionsBundle来获取软可删除行为。软删除,禁用实体

它工作得很好,但我需要关闭它的一个实体。我该怎么做?我可以看到有方法'disableForEntity',也许我应该用这种方法在任何地方都可以设置某处的配置? 我想关闭应用程序上一个实体的过滤器(所有操作)。

问题是因为我的具体实体使用此过滤器扩展了基本实体。

这是可能的,或者我必须禁用它,每次我想使用我的一个特定的实体?

回答

1

我想在你的实体您有:

<?php 

namespace Foo\BarBundle\Entity; 

use Doctrine\ORM\Mapping as ORM; 
use Gedmo\Mapping\Annotation as Gedmo; 

/** 
    * ... 
    * @Gedmo\SoftDeleteable(fieldName="deletedAt") 
    * @ORM\Entity 
*/ 
class Foo 
{ 
    /** 
    * @var \DateTime $deletedAt 
    * 
    * @ORM\Column(name="deleted_at", type="datetime", nullable=true) 
    */ 
    private $deletedAt; 

你必须删除从应该withoud实体行为的软删除,所以你只有删除

* @Gedmo\SoftDeleteable(fieldName="deletedAt") 
+0

我有它在我的基本实体。我的具体实体扩展了这个基本实体......就像这个“AdmUserHasMails类扩展BaseEntity”一样。 –

+0

你不能禁用一个实体的行为,因为它只是你的实现使得所有的实体都可以被软件删除而不是原则扩展。 – Shady

+0

创建一个扩展BaseEntity的SoftDeleteableEntity,前者具有注释,后者不具有。然后从相应的超类扩展你的模型类。当然,如果你有几个这样的自定义类,这会变得头痛,此时你应该考虑将注释移动到真正的实体类。简而言之:不要将事物放在不适用于* all *子类的超类中。 –