https://symfonycasts.com/screencast/doctrine-queries/filters Фильтры в доктрине - достаточно мощный инструмент. Вместо того, чтобы в каждом контроллере писать ->andWhere('e.hidden = 1') Можно сделать такой фильтр: `class HiddenFilter extends SQLFilter { public function addFilterConstraint(ClassMetadata $targetEntity, string $targetTableAlias): string { $constraints = [];

foreach (['hidden', 'hiddenByExterna;'] as $column) { if ($targetEntity->hasField($column)) { $constraints[] = $targetTableAlias . '.' . $column . ' = 0'; } }

return implode(' AND ', $constraints); } } Затем добавляем наш новый фильтр в конфиг: not_hidden_filter: class: AppDoctrineHiddenFilter Важно: не указываем enabled: true, мы сами будем его включать.

Чтобы применять его только в публичной части, можно добавить listener: `#[AsEventListener(KernelEvents::REQUEST)] class HiddenFilterListener { public function __construct( private EntityManagerInterface $em, ) {}

public function onKernelRequest(RequestEvent $evt) { $request = $evt->getRequest();

if (str_starts_with($request->getPathInfo(), '/api/')) { $this->em->getFilters()->enable('not_hidden_filter'); } } }``