doctrine softdeletable. Мягкое удаление в Симфони. Конфигурация и использование
Primary tabs
Мягкое удаление можно реализовать с помощью stof/doctrine-extensions-bundle. Делается так:
-
Подключаем зависимость в проект:
composer require stof/doctrine-extensions-bundle
- Конфигурируем бандл:
stof_doctrine_extensions: orm: default: softdeleteable: true
Если Ваш проект написан на symfony4, то поместите данный код в файл
/config/packages/stof_doctrine_extensions,yaml - В классе сущности указываем с помощью аннотаций, что именно она должна удаляться мягко:
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-удалённые строки будут вести себя как будто их нет.
Если мягкое удаление требуется, но временно необходимо его отключить, можно это сделать прямо в коде.
Источники
- Log in to post comments
- 3554 reads