db->query($sql); return $stmt->fetchAll(); } /** * Get group with channels and domains */ public function getWithDetails(int $id): ?array { $group = $this->find($id); if (!$group) { return null; } // Get channels $channelModel = new NotificationChannel(); $group['channels'] = $channelModel->getByGroupId($id); // Get domains $domainModel = new Domain(); $group['domains'] = $domainModel->where('notification_group_id', $id); return $group; } /** * Delete group and handle relationships */ public function deleteWithRelations(int $id): bool { // The database CASCADE will handle channels // But we need to set domains to NULL $sql = "UPDATE domains SET notification_group_id = NULL WHERE notification_group_id = ?"; $stmt = $this->db->prepare($sql); $stmt->execute([$id]); return $this->delete($id); } }