Come sottolineato dal @gregor nella discussione precedente,
Nella tua prima domanda, ottenere una lista (con un costume query) di tutti gli object_identity_ids (per una specifica entità/classe X) a cui un utente ha accesso.
Quindi, quando si esegue una query su un elenco di oggetti per entità/classe X, aggiungere "IN (object_identity_ids)" alla query.
Matthieu, non ero soddisfatto rispondendo con più congetture (poiché le mie congetture non aggiungono nulla di prezioso alla conversazione). Quindi Ho eseguito alcuni benchmark su questo approccio (Digital Ocean 5 $/mo VPS).
Come previsto, dimensione della tabella non importa quando si utilizza l'approccio matrice IN. Ma una grande dimensione dell'array fa sì che le cose vadano fuori controllo.
Quindi, Join approach
vs IN array approach
?
JOIN è davvero migliore quando la dimensione dell'array è enorme. MA, questo presume che non dovremmo considerare la dimensione della tabella. Risulta, in pratica, IN array è più veloce - tranne quando c'è una grande tabella di oggetti e le voci acl coprono quasi tutti gli oggetti (vedi la domanda collegata).
Ho ampliato il mio ragionamento su una domanda separata.Si prega di vedere When using Symfony's ACL, is it better to use a JOIN query or an IN array query?
Hai guardato questa risposta SO? http://stackoverflow.com/questions/9652755/best-way-to-manage-user-group-object-permissions-with-symfony2 –
Hai provato a utilizzare [createQuery] (http: //docs.doctrine-project metodo .org/it/latest/reference/dql-doctrine-query-language.html # dql-select-clause)? –