He estado jugando con la configuración doctrine2 + ZF durante los últimos días.Grandes colecciones de Doctrine2
Una de las cosas que todavía no puedo descifrar es la gran colección de colecciones assosicaitons. Por ejemplo, digamos que tenemos una entidad llamada Publicación y cada publicación puede tener muchos comentarios.
<?php
/**
* @Entity
*/
class Post
{
/**
* @OneToMany(targetEntity="Comment", mappedBy="post")
*/
protected $comments;
}
?>
Ahora bien, esto cargará todos los comentarios si lo hago
$post->comments
Pero lo que si hay, digamos 10000 comentarios de este post en particular? Entonces todo será cargado, lo cual no es bueno. Y hasta donde sé, la división/paginación no estará disponible hasta la doctrina 2.1.
¿Alguien me puede aconsejar cómo puedo paginar los comentarios? Con DQL tal vez? si DQL, ¿dónde implementa esto? ¿Creo un método getComments en la entidad Post y hago el DQL allí?
Gracias Bill
También hay una extensión llamada LargeCollections junto a la extensión Paginate. – Orhan
donde usarías el código de paginación entonces. En $ post-> getComments()? ¿Podemos usar DQL en la entidad? o tal vez en un servicio? ¿Puedes dar un ejemplo de código? @orhan mismo problema, ¿dónde utilizarías la extensión LargeCollection? – Optimus
¡LargeCollections hizo el truco para mí! Agregué el siguiente método a mi entidad 'Post'.'public function getCommentsPagination ($ limit = 10, $ offset = 0) { $ lc = new \ DoctrineExtensions \ LargeCollections \ LargeCollection(); $ result = $ lc-> getSliceQuery ($ this-> getComments(), $ limit, $ offset) -> getResult(); return $ result; } ' – Optimus