摘要:因為要寫關于數(shù)據(jù)庫表說明的文檔,需要有表結構,如果一個個表去建表格,然后在復制每個字段進去,那就太沒效率了。其實程序很簡單,用程序獲取數(shù)據(jù)庫,再寫入到文件文件格式里就可以了。因為項目是基于框架,所以用的命令工具來實現(xiàn)。
因為要寫關于數(shù)據(jù)庫表說明的文檔,需要有表結構,如果一個個表去建表格,然后在復制每個字段進去,那就太沒效率了。其實程序很簡單,用程序獲取數(shù)據(jù)庫Schema,再寫入到markdown文件(文件格式md)里就可以了。因為項目是基于YII2框架,所以用YII2的命令工具來實現(xiàn)。大概的效果圖如下:
* @since 2018-01-18 */ class TableSchemaController extends Controller { /** * 數(shù)據(jù)庫表生成 */ 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]; } // 當前數(shù)據(jù)庫沒有表 if (count(array_filter($tables)) == 0) { echo "Database has not table "; } $root = dirname(dirname(dirname(__FILE__))); $filename = $argv[3] ? $argv[3] : "/docs/note/數(shù)據(jù)庫設計及字典說明.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/數(shù)據(jù)庫設計及字典說明.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 "; } }
執(zhí)行命令:
./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]
程序很簡單,但是很實用~~
文章版權歸作者所有,未經(jīng)允許請勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請注明本文地址:http://www.ezyhdfw.cn/yun/28120.html
摘要:它分為這么幾個部分,這是下的標準執(zhí)行命令,沒什么好說的。,前面這是里執(zhí)行的標準命令,后面是說明我們要創(chuàng)建一個新的文件。,引號里的內(nèi)容詳細說明了我們要創(chuàng)建的這張數(shù)據(jù)庫表中的字段名稱及類型等。 認識總是在不斷進步的,其實事情遠遠沒有這么復雜,我們只需要安裝一個插件就夠了: composer require -dev --prefer-dist insolita/yii2-migration...
摘要:目前還處于版本,相關文檔也一直在變化,如有疏漏,還請及時反饋安裝兩種安裝方式,或者下載包使用安裝初始化項目推薦下,如果本機還沒有安裝,我的做法是是直接下載包假定你的工作目錄是,將下載的放在下命令行進入執(zhí)行如下命令,初始化一個基于的應用 yii2目前還處于beta版本,相關文檔也一直在變化,如有疏漏,還請及時反饋 Yii2安裝 兩種安裝方式,composer或者下載zip包 ...
摘要:為了演示特性的基本使用,我將會帶領大家構建一個簡單的博客管理系統(tǒng)。目前為止,我們借助生成了一系列操作。有好提示實際開發(fā)中,后臺管理理應利用協(xié)助開發(fā),可快速提高開發(fā)效果。 作者:白狼 出處:http://www.manks.top/document/easy_blog_manage_system.html 本文版權歸作者,歡迎轉(zhuǎn)載,但未經(jīng)作者同意必須保留此段聲明,且在文章頁面明顯位置給出...
摘要:原文來自這一篇文章的開頭就無需多言了,緊接著上一篇的內(nèi)容和計劃,這一篇我們來說說的和。,那既然這樣,我們就來實現(xiàn)一下唄。所以我們首先需要將表中的幾條數(shù)據(jù)刪掉。下一節(jié)再詳細講講吧,這一節(jié)寫下來貌似要說的實在有點多。 原文來自:https://jellybool.com/post/programming-with-yii2-behaviors-and-validat... 這一篇...
摘要:,已經(jīng)好了,試著訪問根目錄下,比如試試,出現(xiàn)界面就成功了沒從先就用命令看下的路由最上面條就是剛剛添加的路由。 先說什么是Swagger, Swagger的使用目的是方便優(yōu)美的呈現(xiàn)出接口API的各種定義, 生成API文檔, 包括參數(shù), 路徑之類. 有時后端改了API的參數(shù)或者其他設置, 前端直接看這個Swagger UI就可以, 方便項目管理和團隊協(xié)作. 官網(wǎng): http://swagg...
閱讀 3209·2021-11-19 09:40
閱讀 2524·2021-10-14 09:42
閱讀 1812·2021-09-22 15:34
閱讀 1513·2019-08-30 15:55
閱讀 856·2019-08-29 12:59
閱讀 471·2019-08-28 18:28
閱讀 1880·2019-08-26 13:42
閱讀 1592·2019-08-26 13:29