【发布时间】:2020-12-18 10:39:12
【问题描述】:
我正在使用ApiPlatform 和Symfony5
我在实体 User 上实现了 softdelete
此实体已正确软删除,我仍想显示某些角色的已删除用户,因此我正在尝试使用DoctrineExtension 动态修改请求。
这是我的UserExtension.php:
public function applyToItem(QueryBuilder $queryBuilder, QueryNameGeneratorInterface $queryNameGenerator, string $resourceClass, array $identifiers, string $operationName = null, array $context = []): void
{
$this->addWhere($queryBuilder, $resourceClass);
}
private function addWhere(QueryBuilder $queryBuilder, string $resourceClass): void
{
if (User::class == $resourceClass &&
$this->security->isGranted(GenericRoles::ROLE_ADMIN)
) {
$rootAlias = $queryBuilder->getRootAliases()[0];
$queryBuilder->andWhere("$rootAlias.deletedAt > '2019-01-01'");
}
}
我验证我输入了 if 条件。
但我仍然在我正在尝试恢复的项目上收到 404(它仍在基础中)
在 db 命令行中输入的相同请求返回我想要恢复的项目。
我还尝试禁用softdelete,如下所示:
$this->entityManager->getFilters()->disable('softdeleteable');
但是这样做会为整个应用程序禁用它,我无法在 UserExtension 中重新启用它
有谁知道我做错了什么?或者如果有其他方法可以恢复软删除的项目
或者,如果您有更多关于该主题的文档,我将不胜感激,因为我已经没有选择了
谢谢!
【问题讨论】:
标签: symfony doctrine api-platform.com soft-delete doctrine-extensions