我已经使用softdelete为我的商店实体设置了软删除。
这是我在doctrine.yml
中的过滤器设置
doctrine:
# ...
orm:
# ...
filters:
softdeleteable:
class: Gedmo\SoftDeleteable\Filter\SoftDeleteableFilter
enabled: true
因此,当我点击URL /stores
时,只返回活动商店,但如果我将配置更改为enabled: false
,它将给出包括已删除项目在内的所有结果,这是正确的。
现在,我想要实现的是从前端传递一个查询参数,比如/stores?deleted=1
,然后我想获取所有数据,如果deleted=1
只找到活动项的话
发布于 2020-05-13 20:08:49
为什么不创建一个使用Request
对象和Doctrine的实体管理器的事件侦听器,并禁用此过滤器?如下所示:
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');
}
}
}
https://stackoverflow.com/questions/61774014
复制相似问题