国产xxxx99真实实拍_久久不雅视频_高清韩国a级特黄毛片_嗯老师别我我受不了了小说

資訊專欄INFORMATION COLUMN

YII2命令行實現數據庫表結構文檔自動生成

Jason_Geng / 3316人閱讀

摘要:因為要寫關于數據庫表說明的文檔,需要有表結構,如果一個個表去建表格,然后在復制每個字段進去,那就太沒效率了。其實程序很簡單,用程序獲取數據庫,再寫入到文件文件格式里就可以了。因為項目是基于框架,所以用的命令工具來實現。

因為要寫關于數據庫表說明的文檔,需要有表結構,如果一個個表去建表格,然后在復制每個字段進去,那就太沒效率了。其實程序很簡單,用程序獲取數據庫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]

程序很簡單,但是很實用~~

文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規行為,您可以聯系管理員刪除。

轉載請注明本文地址:http://m.specialneedsforspecialkids.com/yun/28120.html

相關文章

  • Yii2的無編程migrate示例

    摘要:它分為這么幾個部分,這是下的標準執行命令,沒什么好說的。,前面這是里執行的標準命令,后面是說明我們要創建一個新的文件。,引號里的內容詳細說明了我們要創建的這張數據庫表中的字段名稱及類型等。 認識總是在不斷進步的,其實事情遠遠沒有這么復雜,我們只需要安裝一個插件就夠了: composer require -dev --prefer-dist insolita/yii2-migration...

    張紅新 評論0 收藏0
  • Yii2 起步 之創建項目

    摘要:目前還處于版本,相關文檔也一直在變化,如有疏漏,還請及時反饋安裝兩種安裝方式,或者下載包使用安裝初始化項目推薦下,如果本機還沒有安裝,我的做法是是直接下載包假定你的工作目錄是,將下載的放在下命令行進入執行如下命令,初始化一個基于的應用 yii2目前還處于beta版本,相關文檔也一直在變化,如有疏漏,還請及時反饋 Yii2安裝 兩種安裝方式,composer或者下載zip包 ...

    wuyangnju 評論0 收藏0
  • yii2實戰教程之新手入門指南-簡單博客管理系統

    摘要:為了演示特性的基本使用,我將會帶領大家構建一個簡單的博客管理系統。目前為止,我們借助生成了一系列操作。有好提示實際開發中,后臺管理理應利用協助開發,可快速提高開發效果。 作者:白狼 出處:http://www.manks.top/document/easy_blog_manage_system.html 本文版權歸作者,歡迎轉載,但未經作者同意必須保留此段聲明,且在文章頁面明顯位置給出...

    harriszh 評論0 收藏0
  • Yii2系列教程七:Behaviors And Validations

    摘要:原文來自這一篇文章的開頭就無需多言了,緊接著上一篇的內容和計劃,這一篇我們來說說的和。,那既然這樣,我們就來實現一下唄。所以我們首先需要將表中的幾條數據刪掉。下一節再詳細講講吧,這一節寫下來貌似要說的實在有點多。 原文來自:https://jellybool.com/post/programming-with-yii2-behaviors-and-validat... 這一篇...

    fasss 評論0 收藏0
  • Swagger PHP使用指南

    摘要:,已經好了,試著訪問根目錄下,比如試試,出現界面就成功了沒從先就用命令看下的路由最上面條就是剛剛添加的路由。 先說什么是Swagger, Swagger的使用目的是方便優美的呈現出接口API的各種定義, 生成API文檔, 包括參數, 路徑之類. 有時后端改了API的參數或者其他設置, 前端直接看這個Swagger UI就可以, 方便項目管理和團隊協作. 官網: http://swagg...

    cnio 評論0 收藏0

發表評論

0條評論

最新活動
閱讀需要支付1元查看
<