mirror of
https://gitee.com/ulthon/ulthon_admin.git
synced 2026-07-03 00:12:49 +08:00
102 lines
3.8 KiB
PHP
102 lines
3.8 KiB
PHP
<?php
|
|
|
|
namespace base\common\command\tools\db;
|
|
|
|
use base\common\service\ToolsDbServiceBase;
|
|
use think\console\Command;
|
|
use think\console\Input;
|
|
use think\console\input\Option;
|
|
use think\console\Output;
|
|
use think\facade\Db;
|
|
use think\facade\Config;
|
|
|
|
class ToolsDbInfoBase extends Command
|
|
{
|
|
protected function configure()
|
|
{
|
|
$this->setName('tools:db:info')
|
|
->setDescription('显示数据库连接信息和表列表')
|
|
->addOption('with-count', null, Option::VALUE_NONE, '显示每个表的记录数')
|
|
->addOption('connection', null, Option::VALUE_OPTIONAL, '指定数据库连接配置')
|
|
->addOption('help', 'h', Option::VALUE_NONE, '显示帮助信息');
|
|
}
|
|
|
|
protected function execute($input, $output)
|
|
{
|
|
if ($input->getOption('help')) {
|
|
$service = new ToolsDbServiceBase();
|
|
$service->showHelp('tools:db:info', $output);
|
|
return;
|
|
}
|
|
|
|
$service = new ToolsDbServiceBase();
|
|
|
|
if (!$service->checkDebugMode($output)) {
|
|
return;
|
|
}
|
|
|
|
$connection = $service->getDbConnection($input);
|
|
$service->setConnection($connection);
|
|
$withCount = $input->getOption('with-count');
|
|
|
|
try {
|
|
$config = Config::get('database.connections.' . $connection);
|
|
|
|
if (!$config) {
|
|
$output->error('数据库连接配置不存在:' . $connection);
|
|
return;
|
|
}
|
|
|
|
$output->writeln('');
|
|
$output->writeln('<comment>' . str_repeat('=', 60) . '</comment>');
|
|
$output->writeln('<info>数据库连接信息</info>');
|
|
$output->writeln('<comment>' . str_repeat('=', 60) . '</comment>');
|
|
$output->writeln('');
|
|
$output->writeln('<info>连接名称:</info>' . $connection);
|
|
$output->writeln('<info>数据库类型:</info>' . ($config['type'] ?? 'unknown'));
|
|
$output->writeln('<info>主机地址:</info>' . ($config['hostname'] ?? 'unknown'));
|
|
$output->writeln('<info>数据库名:</info>' . ($config['database'] ?? 'unknown'));
|
|
$output->writeln('<info>端口:</info>' . ($config['hostport'] ?? 'unknown'));
|
|
$output->writeln('<info>字符集:</info>' . ($config['charset'] ?? 'unknown'));
|
|
$output->writeln('<info>表前缀:</info>' . ($config['prefix'] ?? ''));
|
|
$output->writeln('');
|
|
|
|
$output->writeln('<comment>' . str_repeat('-', 60) . '</comment>');
|
|
$output->writeln('<info>表列表</info>');
|
|
$output->writeln('<comment>' . str_repeat('-', 60) . '</comment>');
|
|
$output->writeln('');
|
|
|
|
$tables = Db::connect($connection)->getTables();
|
|
|
|
if (empty($tables)) {
|
|
$output->writeln('无表');
|
|
$output->writeln('');
|
|
return;
|
|
}
|
|
|
|
$prefix = $config['prefix'] ?? '';
|
|
|
|
foreach ($tables as $table) {
|
|
$shortName = $table;
|
|
if ($prefix && str_starts_with($table, $prefix)) {
|
|
$shortName = substr($table, strlen($prefix));
|
|
}
|
|
|
|
if ($withCount) {
|
|
$count = Db::connect($connection)->table($table)->count();
|
|
$output->writeln('<info>' . str_pad($shortName, 40) . '</info>' . $count . ' 条记录');
|
|
} else {
|
|
$output->writeln('<info>' . $shortName . '</info>');
|
|
}
|
|
}
|
|
|
|
$output->writeln('');
|
|
$output->writeln('<comment>' . str_repeat('=', 60) . '</comment>');
|
|
$output->writeln('');
|
|
} catch (\Exception $e) {
|
|
$output->error('获取信息失败:' . $e->getMessage());
|
|
return;
|
|
}
|
|
}
|
|
}
|