StofDoctrineExtensionsBundle softdelete — как его использовать?

Мой босс установил этот пакет для фильтра softdelete, но документация чрезвычайно скудна. . Как мне использовать это в моих запросах на удаление?


person Major Productions    schedule 21.05.2013    source источник
comment
Документация не более чем скудная. StofDoctrineExtensionsBundle — это только интеграция расширений Doctrine для Symfony. Поэтому поищите там документацию по программному удалению.   -  person Emii Khaos    schedule 21.05.2013


Ответы (2)


Включите его в своей конфигурации:

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;

Затем просто удалите сущности, как обычно (об остальном позаботится расширение):

    $em = $this->getDoctrine()->getManager();
    $em->remove($entity);
    $em->flush();
person Thomas K    schedule 21.05.2013
comment
Большое спасибо. Они не поместили эти инструкции в документы! - person Joe Yahchouchi; 30.01.2016
comment
У меня есть связанный с этим вопрос: как только вы remove сущность, она получает метку времени deletedAt и не отображается в обычном запросе find, и это нормально. Но что, если я хочу получить доступ к удаленной отметке времени для какого-либо другого использования? Является ли отключение фильтра вручную, получение данных и его повторное включение единственным вариантом? Кажется немного грязным и, возможно, небезопасным. - person aalaap; 21.10.2016

Мне также понадобилась еще одна часть головоломки: конфигурация доктрины yaml:

XYBundle\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
person Benjamin    schedule 15.11.2016