2013-05-21 12 views
8

Mój szef zainstalował ten pakiet dla filtra miękkiej wymiany, ale documentation jest nieskończony. Jak korzystać z tego w moich kwerendach usuwania?StofDoctrineExtensionsBundle softdelete - Jak z niego korzystać?

+4

Dokumentacja nie jest niczym nieskrępowanym. StofDoctrineExtensionsBundle to tylko integracja [Rozszerzeń Doktryny] (https://github.com/l3pp4rd/DoctrineExtensions) dla Symfony. Spójrz tam na [dokumentację z miękką dającą się usunąć] (https://github.com/l3pp4rd/DoctrineExtensions/blob/master/doc/softdeleteable.md) –

Odpowiedz

38

Włącz go w config:

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

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

potem w swojej jednostki:

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

Następnie wystarczy usunąć podmioty jak normalny sposób (rozszerzenie dba o resztę):

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

Dziękuję bardzo. Nie umieszczali tych instrukcji w dokumentach! –

+1

Mam pokrewne pytanie: Gdy "usuniesz" encję, otrzyma ona znacznik czasu "deletedAt" i nie pojawi się w normalnym zapytaniu 'find', co jest w porządku. Ale co jeśli chcę uzyskać dostęp do usuniętego znacznika czasu w celu innego wykorzystania? Czy ręczne wyłączenie filtru, uzyskanie danych i ponowne włączenie go jest jedyną opcją? Wydaje się być trochę brudny i prawdopodobnie niebezpieczny. – aalaap

+1

@aalaap Spójrz na http://stackoverflow.com/a/38198358/213624 – coudenysj

0

Potrzebowałem także innej części układanki: The doktryna 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 
Powiązane problemy