2013-12-16 171 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 *子類的超類中。 –