Hola,
Luego de buscar bastante en el grupo CakePHP en inglés encontré la
siguiente solución al problema que planteaba. Lo postéo por si a otro
le sirve.
Siguiendo con el ejemplo, puedo crear un método en TemasController,
como sigue:
function verindice() {
$this->Tema->bindModel(array('hasOne' => array('Libro')));
$resu = $this->Tema->find('all', array(
'recursive' => 0,
'fields' => array('Tema.nombre', 'COUNT(Libro.id) AS cant'),
'conditions' => '1=1 GROUP BY Tema.id'
));
// Lo siguiente es opcional, simplemente manda el
resultado a la vista
$this->set('temas', $resu);
}
Devuelve la cuenta de Libros para cada Tema.
De este modo se puede realizar el GROUP BY y contar los casos de lado
varios de la relación (o asociación, en terminos de CakePHP). Sirve
también para otras funciones además de COUNT: SUM, AVG, etc.
Una cuestión colateral se puede presentar utilizando campos calculados
y AS cuando se utilizan ciertos motores de bases de datos (los
resultados no se cargan donde uno esperaría en el array de
resultados). Pero eso ya es motivo de otro topic. El interesado puede
consultar (del grupo CakePHP en inglés):
http://groups.google.com/group/cake-php/browse_thread/thread/2fa2cd69422dfcf/72570cc98b640383
Saludos!
Román Mussi
On 4 oct, 09:58, RománMussi <
romanmu...@gmail.com> wrote:
> Hola, soy nuevo en CakePHP y estoy necesitando ayuda con el el
> siguiente problema (he simplificado al máximo el ejemplo).
>
> Supongamos una aplicación con las siguientes tablas:
>
> Tabla: temas
>
> id nombre
> ----------------------------------------------------
> 1 Economía
> 2 Política
> 3 Filosofía
>
> Tabla: libros
>
> id tema_id titulo
> -----------------------------------------------------------------------------------