Symfony 4 softdelete с доктриной ORM - PullRequest
0 голосов
/ 19 марта 2019

Я хочу, чтобы конкретная сущность была удалена (не все сущности).Я установил пакет StofDoctrineExtensionsBundle , который должен дать мне функцию Softdeleteable .

Поэтому я обновил свою сущность:

Пользователь.php

<?php 
namespace App\Entity;

use Gedmo\Mapping\Annotation as Gedmo;
use Gedmo\SoftDeleteable\Traits\SoftDeleteableEntity;
/**
 * @ORM\Entity(repositoryClass="App\Repository\UserRepository")
 * @Gedmo\SoftDeleteable(fieldName="deletedAt", timeAware=false, hardDelete=false)
 */
class User implements UserInterface
{

    use SoftDeleteableEntity;

Я создал миграцию и запустил миграцию.Моя таблица User теперь в виде дополнительного столбца deleted_at.

В соответствии с документацией Теперь я должен иметь возможность запустить этот код для мягкого удаления записи:

public function delete(User $user, EntityManagerInterface $em)
{
     $em->remove($user);
     $em->flush();

Это, однако, вызывает у меня ошибку, потому что сущность User имеет отношения и сам Пользователь не может быть удален.Конечно, это как я запрограммирован.Но я на самом деле не хочу удалять запись, я хочу мягко удалить запись.

An exception occurred while executing 'DELETE FROM user WHERE id = ?' with params [79]:

SQLSTATE[23000]: Integrity constraint violation: 1451 Cannot delete or update a parent row: a foreign key constraint fails (`thedatabase`.`shoppingcart`, CONSTRAINT `FK_932C7444A76ED395` FOREIGN KEY (`user_id`) REFERENCES `user` (`id`))

При чтении документации , она упоминает что-то о настройке softdelete.Но, честно говоря, я понятия не имею, как это исправить.

Как я могу использовать softdelete в Symfony 4?

1 Ответ

1 голос
/ 19 марта 2019

Я думаю, что вам не хватает включить расширение в файле config / packages / stof_doctrine_extensions.yaml , которое было добавлено в квитанции flex.

Похоже, по умолчанию , это читает

stof_doctrine_extensions:
    default_locale: en_US

Когда, если вы хотите использовать мягкое удаление, вам нужно активировать его:

stof_doctrine_extensions:
    default_locale: en_US
    orm:
        default:
            softdeleteable: true
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...