Mein Chef installiert dieses Bündel für den Softdelete-Filter, aber die documentation ist spärlich. Wie verwende ich das in meinen Löschabfragen?StofDoctrineExtensionsBundle softdelete - Wie benutze ich es?
Antwort
aktivieren Sie es in Ihrem config:
stof_doctrine_extensions:
orm:
default:
...
softdeleteable: true
doctrine:
...
orm:
filters:
softdeleteable:
class: Gedmo\SoftDeleteable\Filter\SoftDeleteableFilter
enabled: true
Dann in Ihrem Unternehmen:
<?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;
Dann löschen Sie einfach Entitäten wie gewohnt (die Verlängerung der Rest kümmert):
$em = $this->getDoctrine()->getManager();
$em->remove($entity);
$em->flush();
Vielen Dank. Sie haben diese Anweisungen nicht in die Dokumentation geschrieben! –
Ich habe eine verwandte Frage: Sobald Sie eine Entität "entfernen", erhält es einen "deletedAt" Zeitstempel und es erscheint nicht in einer normalen 'find' Abfrage, was in Ordnung ist. Aber was, wenn ich auf den gelöschten Zeitstempel für eine andere Verwendung zugreifen möchte? Wird der Filter manuell deaktiviert, werden die Daten abgerufen und die einzige Option wieder aktiviert? Scheint ein wenig schmutzig und möglicherweise unsicher. – aalaap
@aalaap Werfen Sie einen Blick auf http://stackoverflow.com/a/38198358/213624 – coudenysj
Ich brauchte auch ein anderes Puzzleteil: Die Lehre 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
Die Dokumentation ist nicht spärlich. StofDoctrineExtensionsBundle ist nur die Integration der [Doctrine Extensions] (https://github.com/l3pp4rd/DoctrineExtensions) für Symfony. Schauen Sie also nach der [softdeleteable Dokumentation] (https://github.com/l3pp4rd/DoctrineExtensions/blob/master/doc/softdeleteable.md) –