首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >api-platform过滤掉软删除的条目

api-platform过滤掉软删除的条目
EN

Stack Overflow用户
提问于 2020-05-13 19:56:32
回答 1查看 717关注 0票数 2

我已经使用softdelete为我的商店实体设置了软删除。

这是我在doctrine.yml中的过滤器设置

代码语言:javascript
运行
复制
doctrine:
    # ...
    orm:
        # ...
        filters:
            softdeleteable:
                class: Gedmo\SoftDeleteable\Filter\SoftDeleteableFilter
                enabled: true

因此,当我点击URL /stores时,只返回活动商店,但如果我将配置更改为enabled: false,它将给出包括已删除项目在内的所有结果,这是正确的。

现在,我想要实现的是从前端传递一个查询参数,比如/stores?deleted=1,然后我想获取所有数据,如果deleted=1只找到活动项的话

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2020-05-13 20:08:49

为什么不创建一个使用Request对象和Doctrine的实体管理器的事件侦听器,并禁用此过滤器?如下所示:

代码语言:javascript
运行
复制
class FilterListener implements EventSubscriberInterface
{
    private $entityManager;

    public function __construct(EntityManagerInterface $entityManager)
    {
        $this->entityManager = $entityManager;
    }

    public static function getSubscribedEvents(): array
    {
        return [
            RequestEvent::class => 'onKernelRequest',
        ];
    }

    public function onKernelRequest(RequestEvent $event)
    {
        if (!$event->isMasterRequest()) {
            return;
        }

        $request = $event->getRequest();
        if ($request->query->getBoolean('deleted')) {
            $this->entityManager->getFilters()->disable('softdeleteable');
        }
    }
}
票数 4
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/61774014

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档