摘要:因为要写关于数据库表说明的文档,需要有表结构,如果一个个表去建表格,然后在复制每个字段进去,那就太没效率了。其实程序很简单,用程序获取数据库,再写入到文件文件格式里就可以了。因为项目是基于框架,所以用的命令工具来实现。
因为要写关于数据库表说明的文档,需要有表结构,如果一个个表去建表格,然后在复制每个字段进去,那就太没效率了。其实程序很简单,用程序获取数据库Schema,再写入到markdown文件(文件格式md)里就可以了。因为项目是基于YII2框架,所以用YII2的命令工具来实现。大概的效果图如下:
* @since 2018-01-18 */ class TableSchemaController extends Controller { /** * 数据库表生成 */ public function actionCreate() { global $argv; if (!$argv[2] || strcasecmp($argv[2], "help") === 0) { echo "Usage: ./yii table-schema/create [all|tablename] [filename] "; exit; } $db = Yii::$app->db; $allTables = $db->getSchema()->getTableNames(); if ("all" === $argv[2]) { $tables = array_diff($allTables, $this->filterTables()); } else { if (!in_array($argv[2], $allTables)) { echo sprintf("%s isn"t exist ", $argv[2]); exit; } $tables = (array)$argv[2]; } // 当前数据库没有表 if (count(array_filter($tables)) == 0) { echo "Database has not table "; } $root = dirname(dirname(dirname(__FILE__))); $filename = $argv[3] ? $argv[3] : "/docs/note/数据库设计及字典说明.md"; $filePath = $root . $filename; $fp = fopen($filePath, "a+"); if (!$fp) { echo "Open file failed "; } foreach ($tables as $table) { $schema = $db->getTableSchema($table, true); if (!$schema->columns) { continue; } fwrite($fp, "#### $schema->name 表 "); // 表头 $header = "| 字段名 | 类型 | 说明 | "; $header .= "|:--------:|:---------:|:-------:| "; fwrite($fp, $header); // 字段 $row = ""; foreach ($schema->columns as $col => $obj) { $comment = $obj->isPrimaryKey ? "主键" : $obj->comment; $row .= "| $obj->name | $obj->dbType | $comment | "; } fwrite($fp, $row); fwrite($fp, " "); echo "$schema->name successfully "; } fclose($fp); } /** * 需要过滤的表(不希望生成文档的表) * @return array */ protected function filterTables() { $filterTables = [ "tbmigration", "tbAuthAssignment", "tbAuthItemChild", "tbAuthRule", "tbItemTable" ]; return $filterTables; } /** * 所有表 * @return string[] */ protected function allTables() { return Yii::$app->db->getSchema()->getTableNames(); } /** * 清空 */ public function actionClear() { global $argv; if (!$argv[2] || strcasecmp($argv[2], "help") === 0) { echo "Usage: ./yii table-schema/clear [filename] "; exit; } $root = dirname(dirname(dirname(__FILE__))); $filePath = $argv[2] ? $argv[2] : "/docs/note/数据库设计及字典说明.md"; $filePath = $root . $filePath; if (!is_file($filePath)) { echo "$filePath isn"t exists "; exit; } $fp = fopen($filePath, "w"); if (!$fp) { echo "Open file failed "; } fwrite($fp, ""); fclose($fp); echo "Clear successfully "; } }
执行命令:
./yii table-schema/create [all|tablename] [filename] # 例如生成所有表到test.md文件 ./yii table-schema/create all test.md # 生成user表到test.md文件 ./yii table-schema/create user test.md # 清空文档 ./yii table-schema/clear [filename]
程序很简单,但是很实用~~
文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。
转载请注明本文地址:https://www.ucloud.cn/yun/28120.html
摘要:它分为这么几个部分,这是下的标准执行命令,没什么好说的。,前面这是里执行的标准命令,后面是说明我们要创建一个新的文件。,引号里的内容详细说明了我们要创建的这张数据库表中的字段名称及类型等。 认识总是在不断进步的,其实事情远远没有这么复杂,我们只需要安装一个插件就够了: composer require -dev --prefer-dist insolita/yii2-migration...
摘要:目前还处于版本,相关文档也一直在变化,如有疏漏,还请及时反馈安装两种安装方式,或者下载包使用安装初始化项目推荐下,如果本机还没有安装,我的做法是是直接下载包假定你的工作目录是,将下载的放在下命令行进入执行如下命令,初始化一个基于的应用 yii2目前还处于beta版本,相关文档也一直在变化,如有疏漏,还请及时反馈 Yii2安装 两种安装方式,composer或者下载zip包 ...
摘要:为了演示特性的基本使用,我将会带领大家构建一个简单的博客管理系统。目前为止,我们借助生成了一系列操作。有好提示实际开发中,后台管理理应利用协助开发,可快速提高开发效果。 作者:白狼 出处:http://www.manks.top/document/easy_blog_manage_system.html 本文版权归作者,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出...
摘要:原文来自这一篇文章的开头就无需多言了,紧接着上一篇的内容和计划,这一篇我们来说说的和。,那既然这样,我们就来实现一下呗。所以我们首先需要将表中的几条数据删掉。下一节再详细讲讲吧,这一节写下来貌似要说的实在有点多。 原文来自:https://jellybool.com/post/programming-with-yii2-behaviors-and-validat... 这一篇...
摘要:,已经好了,试着访问根目录下,比如试试,出现界面就成功了没从先就用命令看下的路由最上面条就是刚刚添加的路由。 先说什么是Swagger, Swagger的使用目的是方便优美的呈现出接口API的各种定义, 生成API文档, 包括参数, 路径之类. 有时后端改了API的参数或者其他设置, 前端直接看这个Swagger UI就可以, 方便项目管理和团队协作. 官网: http://swagg...
阅读 3107·2021-11-19 09:40
阅读 2417·2021-10-14 09:42
阅读 1661·2021-09-22 15:34
阅读 1422·2019-08-30 15:55
阅读 743·2019-08-29 12:59
阅读 390·2019-08-28 18:28
阅读 1786·2019-08-26 13:42
阅读 1503·2019-08-26 13:29