Wie @gregor in der vorangegangenen Diskussion,
In Ihrer ersten Abfrage ausgeführt hat, eine Liste erhalten (mit einem benutzerdefinierten Abfrage) aller object_identity_ids (für eine bestimmte Entität/Klasse X), auf die ein Benutzer Zugriff hat.
Wenn Sie dann eine Liste von Objekten für Entität/Klasse X abfragen, fügen Sie "IN (object_identity_ids)" zu Ihrer Abfrage hinzu.
Matthieu, ich war nicht zufrieden mit mehr von Vermutungen zu antworten (da meine Vermutungen nichts Wertvolles zum Gespräch hinzufügen). So Ich habe einige Bench-Kennzeichnung auf diesem Ansatz (Digital Ocean 5 $/mo VPS).

Wie erwartet, hat Tabellengröße keine Rolle, wenn die Array-Ansatz verwendet wird. Aber eine große Array-Größe lässt die Dinge außer Kontrolle geraten.
So, Join approach
vs IN array approach
?
JOIN ist in der Tat besser, wenn die Array-Größe riesig ist. ABER, das geht davon aus, dass wir die Tabellengröße nicht berücksichtigen sollten. Stellt sich heraus, in der Praxis IN-Array ist schneller - außer wenn es eine große Tabelle von Objekten und die ACL-Einträge fast jedes Objekt abdecken (siehe die verknüpfte Frage).
Ich habe meine Überlegungen zu einer separaten Frage erweitert.Bitte sehen Sie When using Symfony's ACL, is it better to use a JOIN query or an IN array query?
Haben Sie diese SO Antwort angeschaut? http://stackoverflow.com/questions/9652755/best-way-to-manage-user-group-object-permissions-with-symfony2 –
Haben Sie versucht, [createQuery] (http: //docs.doctrine-project .org/de/latest/reference/dql-document-abfrage-sprache.html # dql-select-klausel) methode? –