Мягкое удаление, Отключить для объекта

Я использую DoctrineExtensions со StofDoctrineExtensionsBundle, чтобы получить поведение с возможностью мягкого удаления.

Это работает очень хорошо, но мне нужно отключить его для одного из моих объектов. Как я могу это сделать? Я вижу, что есть метод 'disableForEntity', может быть, я должен настроить где-то этот метод, чтобы он работал везде? Я хочу отключить этот фильтр для одного объекта в приложении (все действия).

Проблема в том, что мой конкретный объект расширяет базовый объект с помощью этого фильтра.

Возможно ли это, или мне нужно отключать его каждый раз, когда я хочу использовать свою конкретную сущность?


person Michal Olszowski    schedule 16.12.2013    source источник


Ответы (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;

вам нужно удалить поведение объекта, которое должно быть удалено без мягкого удаления, поэтому вам нужно только удалить

* @Gedmo\SoftDeleteable(fieldName="deletedAt")
person Amine    schedule 16.12.2013
comment
У меня есть это в моей базовой сущности. И моя конкретная сущность расширяет эту базовую сущность... Как и этот класс, AdmUserHasMails расширяет базовую сущность. - person Michal Olszowski; 16.12.2013
comment
Вы не можете отключить поведение для одного объекта, потому что только ваша реализация делает все ваши объекты программно удаляемыми, а не расширение доктрины. - person Pierre; 16.12.2013
comment
Создайте SoftDeleteableEntity, который расширяет BaseEntity, причем первый имеет аннотацию, а второй — нет. Затем расширьте свои классы моделей из соответствующего суперкласса. Конечно, это становится головной болью, если у вас есть несколько таких пользовательских классов, и в этот момент вам следует вместо этого рассмотреть возможность переноса аннотаций в реальные классы сущностей. Короче говоря: не помещайте вещи в суперкласс, который не применяется ко всем подклассам. - person Martin Lie; 17.12.2013