2013-05-21 27 views
8

Patronum softdelete filtresi için bu paketi kurdu, ancak documentation seyrek ötesinin ötesindedir. Bunu silme sorgularımda nasıl kullanırım?StofDoctrineExtensionsBundle softdelete - Nasıl kullanırım?

+4

Dokümantasyon seyrek ötesinin ötesindedir. StofDoctrineExtensionsBundle, Symfony için yalnızca [Doktrin Genişletmeleri] (https://github.com/l3pp4rd/DoctrineExtensions) entegrasyonu. Yani [softdeleteable documents] için buraya bakın (https://github.com/l3pp4rd/DoctrineExtensions/blob/master/doc/softdeleteable.md) –

cevap

38

senin config etkinleştir: varlıktaki Sonra

stof_doctrine_extensions: 
    orm: 
     default: 
      ... 
      softdeleteable: true 

doctrine: 
    ... 
    orm: 
     filters: 
      softdeleteable: 
       class: Gedmo\SoftDeleteable\Filter\SoftDeleteableFilter 
       enabled: true 

:

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

Sonra sadece silmek zamanki (uzatma gerisini halleder) gibi kuruluşlar:

$em = $this->getDoctrine()->getManager(); 
    $em->remove($entity); 
    $em->flush(); 
+3

Çok teşekkür ederim. Bu talimatları doktorlara koymadılar! –

+1

İlgili bir sorum var: Bir nesneyi kaldırdığınızda, bir "deleteAt" zaman damgası alır ve normal bir 'find' sorgusunda görünmez, bu da iyi olur. Ancak, başka bir kullanım için silinmiş zaman damgasına erişmek istersem ne olur? Filtreyi manuel olarak devre dışı bırakmak, verileri almak ve tek seçeneği yeniden etkinleştirmek mi? Biraz kirli ve muhtemelen güvensiz görünüyor. – aalaap

+1

@aalaap http://stackoverflow.com/a/38198358/213624 adresine bir göz atın. – coudenysj

0

Ayrıca başka bir bulmaca bölümüne de ihtiyacım vardı: Doktrin yaml config:

ANWISBundle\Entity\Adresse: 
type: entity 
table: adresse 

gedmo: 
    soft_deleteable: 
    field_name: deleted_at 
    time_aware: false 


id: 
    id: 
     type: integer 
     generator: { strategy: AUTO } 


fields: 
    ort: 
     type: string 
     length: 100 
    plz: 
     type: string 
     columnDefinition: varchar(255) NOT NULL DEFAULT '' 

    deleted_at: 
     type: datetime 
     nullable: true