tp导出mysql数据字典
具体代码如下所示
function getMysqlDicitionaryToMd()
{
$dbname = C('DB_NAME');
$model = M();
$result = $model->query("show tables");
if (count($result) > 0) {
$mark = '# ' . $dbname . '数据库' . PHP_EOL;
foreach ($result as $table) {
$table_name = $table["tables_in_{$dbname}"];
$obj = $model->query("show full columns from {$table_name}");
$table_comment = $model->query("SELECT TABLE_COMMENT FROM INFORMATION_SCHEMA.TABLES WHERE table_name = '{$table_name}'")[0];
$mark .= '### ' . $table_name . ' ' . $table_comment['table_comment'] . PHP_EOL;
$mark .= '| 字段名 | 数据类型 | 默认值 | 是否可空 | 备注 |' . PHP_EOL;
$mark .= '| ------ | ------ | ------ | ------ | ------ |' . PHP_EOL;
foreach ($obj as $data) {
$mark .= '| ' . $data['field'] . ' | ' . $data['type'] . ' | ' . $data['default'] . ' | ' . $data['null'] . ' | ' . $data['comment'] . ' | ' . PHP_EOL;
}
$sql = $model->query("show create table {$table_name}")[0];
$mark .= '```sql' . PHP_EOL;
$mark .= $sql["create table"] . PHP_EOL;
$mark .= '```' . PHP_EOL;
}
$data = date("YmdHis");
file_put_contents('数据库' . $dbname . '表结构说明-' . $data . '.md', $mark, FILE_APPEND);
echo'字典导出成功';
}
}
导出结果如下实例
db_huahui数据库
about 测试注释
字段名 | 数据类型 | 默认值 | 是否可空 | 备注 |
---|
id | int(11) unsigned | | NO | |
type | varchar(50) | | NO | |
title | varchar(150) | | NO | |
thumb | varchar(150) | | NO | |
form | varchar(50) | | NO | |
url | varchar(150) | | NO | |
content | text | | NO | |
view_nums | mediumint(9) | 0 | NO | |
status | tinyint(1) | 1 | NO | |
create_time | int(11) | 0 | NO | |
CREATE TABLE `about` (
`id` int(11) unsigned NOT NULL AUTO_INCREMENT,
`type` varchar(50) NOT NULL,
`title` varchar(150) NOT NULL,
`thumb` varchar(150) NOT NULL,
`form` varchar(50) NOT NULL,
`url` varchar(150) NOT NULL,
`content` text NOT NULL,
`view_nums` mediumint(9) NOT NULL DEFAULT '0',
`status` tinyint(1) NOT NULL DEFAULT '1',
`create_time` int(11) NOT NULL DEFAULT '0',
PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=18 DEFAULT CHARSET=utf8mb4 COMMENT='测试注释'