Я видел примеры ACL для работы с одним объектом, но не для получения нескольких элементов, таких как список сообщений, принадлежащих автору. Одно (плохое) предложение заключалось в том, чтобы получить все элементы, а затем отфильтровать их с помощью acl — это не сработает, когда у нас будет миллион элементов. Каков предполагаемый способ получения нескольких элементов - скажем, я хочу получить все свои сообщения (используя любые критерии, которые мне нужны, например, опубликованные или упорядоченные) партиями по 50 для пейджера (еще одна причина, почему фильтрация сообщений не будет работать - я в конечном итоге с разными размерами страниц).
Symfony2 ACL и пейджер/фильтрация нескольких сущностей
Ответы (1)
Я думаю, вам не следует использовать ACL для определения того, какие сообщения принадлежат конкретному автору, потому что ACL предназначен для управления доступом/разрешениями, а не для поиска владельцев или определения объектных отношений.
Но, конечно, вы можете получить список сообщений, которые определенный пользователь может просматривать, редактировать или модерировать, например.
В настоящее время нет возможности сделать это на уровне API, но... ну, я думаю, в Symfony2/Doctrine2 вы можете просто сделать Native Query и присоединиться с помощью таблица acl_entries.
Но есть недостаток. В большой системе таблица acl_entries будет содержать слишком много строк, и соединение с ней может быть медленным (мы знаем, что MySQL иногда бывает глупым). Таким образом, вы также можете создать какую-то систему кэширования вокруг этого.