Слушатели событий в Doctrine 2 очень полезны. Я могу использовать их, чтобы эффективно использовать ACL для создания, обновления и удаления объектов. Однако я не могу найти способ сделать это для загрузки сущностей.
Событие postLoad срабатывает после загрузки объекта, и я могу проверить ACL в прослушивателе событий, но что мне делать? Я хотел бы молча удалить объекты с ACL deny из результирующего набора, чтобы возвращались только те объекты, которые пользователь имеет разрешение на просмотр.
Внутри слушателя я пробовал $entity = null
и unset($entity)
, но ни один из них не работает, потому что UOW все еще содержит ссылку. Я могу использовать $entitymanager->detatch($entity)
, но это только удаляет его из менеджера сущностей, а не уничтожает сущность.
Итак, есть ли способ сделать то, что я пытаюсь достичь? Возможно, есть другой путь?