getFields(['id', 'department_id', 'created_at']); // Get the departments $departments = $departments_o->getFields(['id', 'name']); // For each year, add the months covered $this->add_monthly_labels(); // Add the counts for each department, for each month in each year foreach ( $departments as $department ) { $department_data_set = []; foreach ( $this->get_yearly_months_covered() as $year => $months ) { foreach ( $months as $month ) { $count = 0; foreach ( $orders as $order ) { if ($order['department_id'] == $department['id'] && date('F', strtotime($order['created_at'])) == $month && date('Y', strtotime($order['created_at'])) == $year) { $count++; } } $department_data_set[$month . ' ' . $year] = $count; } } // Add the department data set $this->add_data_set($department['name'], $department_data_set); } return $this; } }