db = \Config\Database::connect(); } public function getData($id){ if ($id == 0) return $this->getAllData(); else return $this->getDetailData($id); } private function getDetailData($id){ $jetzt = date('Y-m-01'); $query = <<= '$jetzt' AND (datum < '$jetzt'::date + interval '1 month') AND budget_bills.id = bill_id AND account_id = finanzen.budget_accounts.id AND (account_id IN ( WITH RECURSIVE subordinates AS ( SELECT id, parent_id, description FROM finanzen.budget_accounts WHERE id = $id UNION SELECT e.id, e.parent_id, e.description FROM finanzen.budget_accounts e INNER JOIN subordinates s ON s.id = e.parent_id) SELECT id FROM subordinates )) GROUP BY description, account_id EOD; $data = array(); $result = $this->db->query($query); foreach ($result->getResult() as $row) { $werte[] = $row->amount; $ids[] = $row->id; $labels[] = $row->description; } $data['data'] = json_encode($werte); $data['labels'] = json_encode($labels); $data['ids'] = json_encode($ids); $data['title'] = "Kategorieübersicht > ".$jetzt; return view("charts/monthly", $data); } private function getAllData(){ $jetzt = date('Y-m-01'); $query = <<= '$jetzt' AND budget_bills.id = bill_id AND (account_id IN ( WITH RECURSIVE subordinates AS ( SELECT id, parent_id, description FROM finanzen.budget_accounts WHERE id = w.id UNION SELECT e.id, e.parent_id, e.description FROM finanzen.budget_accounts e INNER JOIN subordinates s ON s.id = e.parent_id) SELECT id FROM subordinates )) ) AS x GROUP BY description, id) as i WHERE summe is not null; EOD; $data = array(); $result = $this->db->query($query); foreach ($result->getResult() as $row) { $werte[] = $row->summe; $ids[] = $row->id; $labels[] = $row->description; } $data['data'] = json_encode($werte); $data['labels'] = json_encode($labels); $data['ids'] = json_encode($ids); $data['title'] = "Monatsübersicht > ".$jetzt; return view("charts/monthly", $data); // SELECT description,amount FROM (SELECT id,description from finanzen.budget_accounts WHERE parent_id=0 AND type='output' AND LKZ is null) as w, // LATERAL // (SELECT subamount as amount // FROM finanzen.budget_billdetails, finanzen.budget_bills // WHERE datum >= DATE_TRUNC('month',current_date) // AND budget_bills.id = bill_id // AND (account_id IN // (SELECT id from finanzen.budget_accounts WHERE (id = w.id OR parent_id = w.id)) // ) // ) AS x } }