我应该在 Doctrine 中禁用过滤器后启用它还是在下一个请求中自动启用它

Should I enable filter after disabling it in Doctrine or it will be automatically enabled in the next request

我正在做一个 Symfony 项目,我正在使用全局过滤器,我需要在一个控制器操作中禁用它。我应该在完成未过滤结果的工作后启用它们,还是它们会在下一个请求时自动启用?我还应该在启用过滤器后使用 EntityManager 的 clear() 方法吗?

不,如果您的 Doctrine 过滤器默认启用,则在禁用过滤器后无需再启用它。

根据 Doctrine Filter documentation,如果你的配置如下:

doctrine:
    orm:
        filters:
            myFilter:
                class: MyVendor\MyBundle\Filters\MyFilter
                enabled: true
                ...

并且您使用以下方法禁用控制器内的过滤器:

public function homepageAction(Request $request)
{
    ....
    /** @var EntityManager $em */
    $em = $this->getDoctrine()->getManager();
    $filters = $em->getFilters()
                  ->disable('myFilter');
    ....
}

已为完整请求禁用过滤器。但是,如果您请求另一个 Controller,而您没有禁用过滤器,则将应用该过滤器。