addArgument('table', InputArgument::REQUIRED, 'O nome da tabela') ->addOption('format', 'f', InputOption::VALUE_OPTIONAL, 'O formato do arquivo (csv, json)', 'csv') ->addOption('path', 'p', InputOption::VALUE_OPTIONAL, 'O caminho para salvar o arquivo', 'storage/exports'); } protected function execute(InputInterface $input, OutputInterface $output): int { $tableName = $input->getArgument('table'); $format = strtolower($input->getOption('format')); $path = $input->getOption('path'); $connection = Capsule::connection(); $dbName = $connection->getDatabaseName(); if (!Capsule::schema()->hasTable($tableName)) { $output->writeln("Tabela '{$tableName}' não encontrada no banco de dados."); return Command::FAILURE; } $results = $connection->table($tableName)->get(); if ($results->isEmpty()) { $output->writeln("A tabela '{$tableName}' está vazia."); return Command::SUCCESS; } $output->writeln("Exportando dados da tabela: {$tableName}"); $directory = dirname(__DIR__, 3) . '/' . ltrim($path, '/'); if (!is_dir($directory)) { mkdir($directory, 0755, true); } $filename = "{$tableName}_" . date('Y-m-d_H-i-s') . ".{$format}"; $fullPath = rtrim($directory, '/') . '/' . $filename; if ($format === 'json') { file_put_contents($fullPath, json_encode($results, JSON_PRETTY_PRINT)); } elseif ($format === 'csv') { $fp = fopen($fullPath, 'w'); // Adiciona o cabeçalho $headers = array_keys((array) $results[0]); fputcsv($fp, $headers); foreach ($results as $row) { fputcsv($fp, (array) $row); } fclose($fp); } else { $output->writeln("Formato '{$format}' não suportado."); return Command::FAILURE; } $output->writeln("Dados exportados com sucesso para: {$fullPath}"); return Command::SUCCESS; } }