コード例 #1
0
ファイル: DatabaseManager.php プロジェクト: spiral/components
 /**
  * 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;
 }
コード例 #2
0
ファイル: ListCommand.php プロジェクト: vvval/spiral
 /**
  * @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();
 }