Ho un'entità Shop
e un ente collegato ShopProduct
, con la seguente relazione:dottrina carico supplementare pigri non funziona come previsto con conteggio
/**
* @ORM\OneToMany(targetEntity="ShopProduct", mappedBy="shopid", fetch="EXTRA_LAZY")
*/
private $products;
In un modello rametto voglio accedere il conteggio di products
, quindi accedo
{{ entity.getProducts().count }}
Ma quando si usa il profiler di Symfony2 per guardare il numero e il contenuto delle domande, vedo che un pieno di selezione viene emesso, al posto del COUNT
Mi aspetterei (basato su the documentation).
L'emissione della selezione completa per ciascuno dei valori di Shop
s comporta un utilizzo della memoria di 250 MB + e un tempo di caricamento della pagina di 30+ secondi, che non è desiderato.
Dopo aver aggiunto il fetch="EXTRA_LAZY"
ho eliminato le cache di dottrina.
Sto trascurando qualcosa, usando l'approccio sbagliato o fraintendendo i documenti?
[modifica]
doctrine/annotations v1.1
doctrine/cache v1.0
doctrine/collections v1.1
doctrine/common 2.4.0-RC1
doctrine/data-fixtures dev-master eef10f6
doctrine/dbal 2.3.3
doctrine/doctrine-bundle v1.2.0-beta1
doctrine/doctrine-fixtures-bundle dev-master 275540d
doctrine/doctrine-migrations-bundle dev-master 99c0192
doctrine/inflector v1.0
doctrine/lexer v1.0
doctrine/migrations dev-master e1f6efc
doctrine/orm 2.3.3
qualche suggerimento extra ramoscello: usare 'entity.products.count' invece.Questo cercherà automaticamente il modo migliore per ottenere la proprietà 'products' –
Questo è quello che ho provato in origine, sfortunatamente ha lo stesso # e tipo di query e tempo di caricamento. Non riesco a immaginare che sia il modo migliore;) –
@TheRookie quale versione dell'ORM stai usando? Puoi provare questo fuori dal contesto di Twig? – Ocramius