/** * Get instance of every available driver/connection. * * @return Driver[] * @throws DatabaseException */ public function getDrivers() { $result = []; foreach ($this->config->connectionNames() as $name) { $result[] = $this->driver($name); } return $result; }
/** * @param DatabasesConfig $config * @param DatabaseManager $dbal */ public function perform(DatabasesConfig $config, DatabaseManager $dbal) { if ($this->argument('db')) { $databases = [$this->argument('db')]; } else { //Every available database $databases = $config->databaseNames(); } if (empty($databases)) { $this->writeln("<fg=red>No databases found.</fg=red>"); return; } $grid = $this->tableHelper(['Name (ID):', 'Database:', 'Driver:', 'Prefix:', 'Status:', 'Tables:', 'Count Records:']); foreach ($databases as $database) { $database = $dbal->database($database); $driver = $database->driver(); $header = [$database->getName(), $driver->getSource(), $driver->getType(), $database->getPrefix() ?: self::SKIP]; try { $driver->connect(); } catch (\Exception $exception) { $grid->addRow(array_merge($header, ["<fg=red>{$exception->getMessage()}</fg=red>", self::SKIP, self::SKIP])); if ($database->getName() != end($databases)) { $grid->addRow(new TableSeparator()); } continue; } $header[] = "<info>connected</info>"; foreach ($database->getTables() as $table) { $grid->addRow(array_merge($header, [$table->getName(), number_format($table->count())])); $header = ["", "", "", "", ""]; } $header[1] && $grid->addRow(array_merge($header, ["no tables", "no records"])); if ($database->getName() != end($databases)) { $grid->addRow(new TableSeparator()); } } $grid->render(); }