Я хочу, чтобы конкретная сущность была удалена (не все сущности).Я установил пакет 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?