doctrine softdeletable. Мягкое удаление в Симфони. Конфигурация и использование

Мягкое удаление можно реализовать с помощью stof/doctrine-extensions-bundle. Делается так:

  1. Подключаем зависимость в проект:

    composer require stof/doctrine-extensions-bundle

  2. Конфигурируем бандл:
    stof_doctrine_extensions:
        orm:
            default:
                softdeleteable: true

    Если Ваш проект написан на symfony4, то поместите данный код в файл
    /config/packages/stof_doctrine_extensions,yaml

  3. В классе сущности указываем с помощью аннотаций, что именно она должна удаляться мягко:
    use Gedmo\Mapping\Annotation as Gedmo;
    
    /
     * @Gedmo\SoftDeleteable(fieldName="deletedAt")
     * @ORM\Entity()
     * @ORM\Table(name="`user`")
     */
    class User 
    {
        // ляляля..
    
        /
         * @var DateTime
         *
         * @ORM\Column(name="deleted_at", type="datetime", nullable=true)
         */
        private $deletedAt;

Всё) теперь при вызове

 $entityManager->remove($user); 
 $entityManager->flush();

строка из бд не будет удаляться, а будет заполняться поле deletedAt. При всевозможных поисках soft-удалённые строки будут вести себя как будто их нет.

Если мягкое удаление требуется, но временно необходимо его отключить, можно это сделать прямо в коде.

Источники