我有一个仪表板,我在其中显示有关Meters
的一些信息。列名称为Team
,Status
,Balance
和Date
。
表中显示的结果是从query
生成的。
SELECT meters.meter_status, COUNT(meters.meter_msn) AS total ,user_groups.title,
CASE
WHEN meters.meter_status= 'Installation Ready' THEN CAST(issue_meters.created_at AS DATE)
WHEN meters.meter_status= 'Installed' THEN CAST(installations.created_date AS DATE)
WHEN meters.meter_status= 'Communication Failed' THEN CAST(installations.created_date AS DATE)
ELSE CAST(meters.created_at AS DATE) END AS created_at
FROM meters
INNER JOIN issue_meters ON (issue_meters.meter_serial=meters.meter_msn)
INNER JOIN user ON (user.id = meters.issued_user)
INNER JOIN user_groups ON (user_groups.id = user.group_id)
LEFT JOIN installations ON (installations.meter_msn=meters.meter_msn)
WHERE meters.meter_status IN ('Installation Ready','Communication
Failed','Installed')
AND user_groups.id = 10
GROUP BY meters.meter_status,user_groups.title, created_at
SqlYog中的输出
现在,当我尝试在我的信息中心中看到这些结果时,所有数据都显示在Date
上。
动作控制器
public function actionTeampro($team_id)
{
//$team_id = isset($_REQUEST['team_id']) ? $_REQUEST['team_id'] : '';
$where = "";
if ($team_id != '') {
$where = " AND `user_groups`.`id`=" . $team_id;
}
$sql = "SELECT meters.`meter_status`, COUNT(`meters`.`meter_msn`) AS total ,`user_groups`.`title`,
CASE
WHEN meters.`meter_status`= 'Installation Ready' THEN CAST(`issue_meters`.`created_at` AS DATE)
WHEN meters.`meter_status`= 'Installed' THEN CAST(`installations`.`created_date` AS DATE)
WHEN meters.`meter_status`= 'Communication Failed' THEN CAST(`installations`.`created_date` AS DATE)
ELSE CAST(`meters`.`created_at` AS DATE) END AS created_at
FROM `meters`
INNER JOIN `issue_meters` ON (`issue_meters`.`meter_serial`=`meters`.`meter_msn`)
INNER JOIN `user` ON (`user`.`id` = `meters`.`issued_user`)
INNER JOIN `user_groups` ON (`user_groups`.`id` = `user`.`group_id`)
LEFT JOIN `installations` ON (`installations`.`meter_msn`=meters.`meter_msn`)
WHERE meters.`meter_status` IN ('Installation Ready','Communication Failed','Installed')
$where
GROUP BY meters.`meter_status`,`user_groups`.`title`, created_at";
$rows = Yii::$app->db->createCommand($sql)->queryAll();
$output = [];
$grandtotal = 0;
foreach ($rows as $row) {
$std = new \stdClass();
$std->title = $row['title'];
$std->count = $row['total'];
//echo $row['status'].",";
$std->status = $row['meter_status'];
$std->created_at = $row['created_at'];
$grandtotal += $std->count;
$output[] = $std;
}
return $this->renderPartial('progress', ['model' => $output, 'grandtotal' => $grandtotal]);
}
查看
<div class="box-body">
<div class="table-responsive">
<table class="table no-margin">
<thead>
<tr>
<th>Team</th>
<th>Status</th>
<th>Balance</th>
<th>Date</th>
</tr>
</thead>
<tbody id="dashboard-team-progress">
</tbody>
</table>
</div>
</div>
信息中心输出
我也转储rows
喜欢
var_dump($rows);
exit();
我得到的输出是
array(5) { [0]=> array(4) { ["meter_status"]=> string(18) "Installation Ready" ["total"]=> string(1) "2" ["title"]=> string(27) "Accurate Meter Installation" ["created_at"]=> string(10) "2017-12-03" } [1]=> array(4) { ["meter_status"]=> string(18) "Installation Ready" ["total"]=> string(1) "1" ["title"]=> string(27) "Accurate Meter Installation" ["created_at"]=> string(10) "2017-12-05" } [2]=> array(4) { ["meter_status"]=> string(9) "Installed" ["total"]=> string(2) "14" ["title"]=> string(27) "Accurate Meter Installation" ["created_at"]=> string(10) "2017-12-04" } [3]=> array(4) { ["meter_status"]=> string(9) "Installed" ["total"]=> string(2) "10" ["title"]=> string(27) "Accurate Meter Installation" ["created_at"]=> string(10) "2017-12-05" } [4]=> array(4) { ["meter_status"]=> string(9) "Installed" ["total"]=> string(1) "7" ["title"]=> string(27) "Accurate Meter Installation" ["created_at"]=> string(10) "2017-12-06" } }
我不知道为什么日期没有显示,因为转储created_at
是日期。
任何帮助都将受到高度赞赏。