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