Symfony2 ACL и пейджер / фильтрация нескольких объектов - PullRequest
10 голосов
/ 11 сентября 2011

Я видел примеры ACL для работы с одним объектом, но ни один из них не рассматривал выборку нескольких элементов, например, список сообщений, принадлежащих автору.Одним (плохим) предложением было извлечь все элементы и затем отфильтровать их с помощью acl - не получится, когда у нас будет миллион элементов.Каков предполагаемый способ получения нескольких элементов - скажем, я хочу получить все свои сообщения (используя любые критерии, которые мне нужны, такие как опубликованные или заказанные) партиями по 50 для пейджера (еще одна причина, почему пост-фильтрация не будет работать - яв конечном итоге с различными размерами страницы).

1 Ответ

2 голосов
/ 18 ноября 2011

Я думаю, вам не следует использовать ACL для определения того, какие сообщения принадлежат конкретному автору, поскольку ACL касается управления доступом / разрешений, а не поиска владельцев или определения отношений объектов.

Но, конечно, вы вполне можете захотеть получить список сообщений, которые пользователь может просматривать, редактировать или модерировать, например.

В настоящее время нет функциональности для этого на уровне API, но ... ну, я думаю, что в Symfony2 / Doctrine2 вы можете просто сделать Собственный запрос и присоединиться с помощью acl_entriesТаблица .

Но есть и недостаток.В большой системе таблица acl_entries будет содержать слишком много строк, и объединение с ней может быть медленным (мы знаем, что MySQL иногда глуп).Так что, возможно, вы захотите построить какую-то систему кеширования вокруг этого.

...