Bueno a ver si alguien me puede ayudar porque no consigo dar con la tecla.
Les cuento, te una aplicacion en cakephp, donde quiero hacer una consulta a la bdd para sacar un listado de cantidades
El siguiente codigo es valido, recibe 2 fechas y en el resultado obtengo la 'cantidad' agrupada por el campo 'tipo_id'.
Código PHP:
foreach ($origenes as $orig => $origvalue){
$condition = array();
$condition[] = array('AND' =>array('Formulario.created > '=>$fecha1, 'Formulario.created <= '=>$fecha2));
$formularios = $this->Formulario->find('all',array('conditions'=>$condition,'fields'=>array('Formulario.id','Formulario.tipo_id','COUNT(Formulario.tipo_id) AS cantidad'), 'group' => 'Formulario.tipo_id', 'recursive' => -1));
}
Ahora lo que necesito es complicarlo un poco mas, quisiera hacer lo mismo, pero agruparlos tambien por la hora de creacion (campo created).
Problemas, el campo created es un datetime, asi que necesitaria, tomar solo la hora de creacion sin tener en cuenta ni los minutos ni los segundos.
Una cosa que probe, pero aclaro, me parece una burrada jaja
Es ponerle entre medio un bucle de 0 a 23, pero me dispara la cantidad de busquedas de 90 a 2200 (aprox). y claro tarda 4 minutos en ejecutarse y no es viable
Código PHP:
foreach ($origenes as $orig => $origvalue){
for ($z=0;$z < 24;$z++){
if ($z < 10){
$z1 = '0'.$z;
}else{
$z1 = $z;
}
$condition = array();
$condition[] = array('AND' =>array('Formulario.created > '=>$fecha1, 'Formulario.created <= '=>$fecha2));
$formularios = $this->Formulario->find('all',array('conditions'=>$condition,'fields'=>array('Formulario.id','Formulario.tipo_id','COUNT(Formulario.tipo_id) AS cantidad'), 'group' => 'Formulario.tipo_id', 'recursive' => -1));
$condition[] = array('Formulario.created LIKE '=>'%-%-% '.$z1.':%:%');
}
}
Asi que agradezco cualquier ayuda, saludos