Tengo una aplicación CakePHP 1.3 y realmente disfruto de Containable behavior para buscar datos.CakePHP Modelo: COUNT (*) en Containable
Supongamos que tengo publicaciones en relación uno a muchos con comentarios. Yo uso Containable para consultar (para paginación) una lista de todas las Publicaciones y los Comentarios que pertenecen. Pero solo estoy interesado en cuántos comentarios tiene cada publicación. No encontré ninguna forma de lograr esta consulta con contenido sin obtener todas las filas de Comentarios. Intenté:
$this->paginate=array(
'fields' => 'Post.title, Post.created',
'contain' => array('Comment'=>'COUNT(*) AS count'),
);
resultados en 'Model "Comentario" no está asociado con el modelo "Count"' mensaje de error.
$this->paginate=array(
'fields' => array('Post.title, Post.created'),
'contain' => array('Comment'=>array('fields'=>'COUNT(*) AS count'),
);
no funciona, conjunto de resultados contiene información para cada puesto una matriz comentario a vacío a excepción de la última, donde se contiene el campo de cuenta, pero tener el número de todos los comentarios y no sólo los que pertenecen.
Mi otra suposición era
$this->paginate=array(
'fields' => 'Post.title, Post.created, COUNT(Comment.id)',
'contain' => array('Comment'=>array('fields'=>''),
);
pero esto resulta en un error, porque las relaciones hasMany se consultan de forma independiente, por lo que la mesa de respuesta no está en la consulta para las entradas de correos. ¿Cómo puedo contar la cantidad de comentarios que tiene una publicación?
Esa es una buena idea, pero no resuelve el problema para consultas más complejas donde no funcionaría el mantenimiento de un recuento asociado a una fila (por ejemplo, un sistema de informes donde el usuario elige determinadas condiciones). ¿No hay otra forma de obtener un conteo usando Containable? – Zxaos