访问 Gedmo 软删除实体

问题描述 投票:0回答:1

在 User 实体类的注释中,我有:

@Gedmo\SoftDeleteable(fieldName="deletedAt", hardDelete=false)

稍后在代码中:

/**
 * @var \DateTime
 * @ORM\Column(type="datetime", nullable=true)
 */
protected $deletedAt;

软删除工作正常,但我想要修改,以便软删除用户仍然可以访问,例如使用

$message->getSentBy()
。因为用户外键在另一个表中。

在类消息中我有字段:

/**
 * @ORM\ManyToOne(targetEntity="User")
 * @ORM\JoinColumn(name="locked_by", referencedColumnName="id")
 */
private $sentBy;

现在由于软删除,只要常规活动用户希望看到软删除用户发送的消息我收到错误无效用户(找不到用户实体)。

有没有办法修改软删除,以便在另一个外键使用该字段的地方可以选择它?或者可用于选择语句。

我在 PHP 7.4 上使用 Symfony 5.4

php symfony doctrine-orm doctrine gedmo-tree
1个回答
0
投票

当您需要访问“已删除”实体时,只需禁用过滤器即可:

$em->getFilters()->disable('soft-deleteable');
$art = $repo->findOneBy(array('title' => 'My Article'));

// or
// Enable / Disable filter filter, for specified entity (default is enabled for all)
$filter = $em->getFilters()->enable('soft-deleteable');
$filter->disableForEntity('Entity\Article');
$filter->enableForEntity('Entity\Article');

参见https://github.com/doctrine-extensions/DoctrineExtensions/blob/main/doc/softdeleteable.md#usage

© www.soinside.com 2019 - 2024. All rights reserved.