Se in Doctrine è presente un insieme di entità associate all'associazione, è possibile che si desideri recuperare tali entità senza che vengano recuperate le associazioni mappate e rallentando la query.Come recuperare le entità senza il loro mapping delle associazioni in Doctrine 2
Ad esempio, ho un insieme di entità associate a una catena di tabelle di database collegate. Sono tutte una di queste associazioni e agiscono come una gerarchia dei prezzi nelle matrici sulle pagine dei prodotti. Essi possono essere rappresentati come così:
SitePage->SiteMatrix->SiteItems->SiteItemPrices.
La mappatura associato funziona perfettamente, e quando uso il metodo findBy per ottenere la radice SitePage oggetto contiene matrici che rappresentano le entità mappate lungo la catena. In altre parole, l'oggetto SitePage contiene tutte le matrici, che contiene tutti gli elementi che contengono tutti i prezzi. Fin qui tutto bene.
Il mio problema è che ogni volta che ottengo un elenco di pagine sul mio sito, la dottrina sta percorrendo l'intero albero di mapping dell'associazione e mi restituisce l'intero datatabase che è molto lento. A volte voglio solo ottenere la mia entità SitePage per ID e non contenere tutte le associazioni associate.
Ho esaminato lazy loading pigro e extra di associazioni ma sembrano solo di influenzare alcune funzioni, e non findBy ecc La documentazione ufficiale è tutt'altro che utile: http://doctrine-orm.readthedocs.org/projects/doctrine-orm/en/latest/tutorials/extra-lazy-associations.html
Altre domande simili su Stack Overflow hanno andato senza risposta: Doctrine 2 Association Mapping Overhead?
C'è un modo semplice per recuperare un'entità senza le associazioni associate? Il modo più semplice che riesco a vedere attualmente è creare due entità per ogni tabella di database, una con associazione delle associazioni e una senza per l'uso nelle diverse situazioni in cui sono richieste. Mi sembra strano che tu non possa semplicemente recuperare un'entità e specificare se vuoi collegarti ad altre entità o recuperarla da sola.
Grazie per qualsiasi informazione sull'argomento.
Per impostazione predefinita, Doctrine dovrebbe caricare le associazioni pigro. Sembra che tutte le tue associazioni siano impostate su un caricamento avido. Potresti aggiungere il codice per due entità con la loro associazione cartografica per escludere eventuali problemi di associazione? – JimL
Grazie per la vostra risposta, ma questo problema ha più di un anno. È risultato che stavo usando un serializzatore per serializzare le mie entità in array, ed era questo serializzatore che stava chiamando ogni funzione getter lungo l'albero di mappatura delle associazioni. Una volta che ho appreso le esclusioni, la profondità massima e le funzionalità dei gruppi all'interno del pacchetto JMS Serializer, tutto è diventato chiaro e ho potuto esercitare l'associazione con un controllo molto maggiore. – Asq