come visualizzare piu query in un report


(Sbondi) #1

Ciao,

ho la necessità di creare un report con dei campi che prendono valori da diverse query.

Mi chiedevo se si potesse fare e quale sarebbe la implementazione esatta

Attualmente il mio codice ha:


$criteria= new CDbCriteria;

$criteria->select = "COUNT(*) as total";

$criteria->condition = "(project.prj_start_date >= ‘$current_date’) AND

(project.prj_start_date < ‘$next_date’) AND

(project.class_id=$class_id)

  AND (phases.status_id='5') &quot;;

$criteria->with ="phases.project";

$totals = Projects::model()->findall($criteria)

foreach ($totals as $tot)

$report+= $tot->total;

$this->render(‘report2’,array(‘reports’=>$report));

è possibile nella stesa funzione aggiungere una nuovo criteria ad esempio criteria2 con una nuova query e fare il render tipo:

$this->render(‘report2’,array(‘reports’=>$report,‘reports’=>$report2));

ci sono soluzioni?


(Sbondi) #2

leggendo il tutorial ho trovato

$this->render(‘edit’, array(

'var1'=&gt;&#036;value1,


'var2'=&gt;&#036;value2,

));


(Matteo Falsitta) #3

Esatto, puoi mandare tutte le variabili che vuoi alle view.

ti do alcuni consigli:

Non fare mai i cicli tipo:




foreach ($totals as $tot)

$report+= $tot->total;



Non sono per niente stilosi, molto meglio fare un’altra query senza group by (fra l’altro non c’e’ nessuna group by neanche nella tua query originale, come fai ad ottenere piu’ di una riga?).

Il motivo e’ il seguente: se per caso ti ritrovi con 100.000 risultati, con ogni probabilita’ vorrai dividerli in pagine, per cui il tuo ciclo gia’ non funziona piu’.

Fai tante query e non elaborare i dati in php: il database lavora sempre meglio con i dati, e’ fatto apposta.