I am trying to show some stats given date ranges. In table rows there are many ID’s and trying to calculate total minutes of it’s own ID.
Currently returns values as below:
{"id":"25","minute":13}
{"id":"17","minute":12}
{"id":"16","minute":10}
{"id":"17","minute":10}
{"id":"16","minute":4}
{"id":"34","minute":5}
{"id":"17","minute":21}
{"id":"30","minute":12}
{"id":"30","minute":13}
{"id":"30","minute":50}
Controller
public function actionStats() {
if (isset($_POST['begin'], $_POST['end'])) {
$begin = strtotime($_POST['begin']);
$end = strtotime($_POST['end']);
$Criteria = new CDbCriteria();
$Criteria->condition = "created >= $begin and created <= $end and status=1";
$transcripts = Transcripts::model()->findAll($Criteria);
foreach($transcripts as $transcript) {
$op = $transcript->opID;
$minute = $transcript->ended - $transcript->created;
echo json_encode(array("id" => $op, "minute" => floor($minute/60)));
}
}
}
I’d modify your code to look like:
This should result in output that looks like:
If your JSON needs to be like you specified above, you would have code like: