因為要寫關於資料庫表說明的文件,需要有表結構,如果乙個個表去建**,然後在複製每個字段進去,那就太沒效率了。其實程式很簡單,用程式獲取資料庫schema,再寫入到markdown檔案(檔案格式md)裡就可以了。因為專案是基於yii2框架,所以用yii2的命令工具來實現。大概的效果圖如下:
/** * 資料庫表結構文件自動生成工具
* class tableschemacontroller
* @package console\controllers
* @author wuzhc * @since 2018-01-18
*/class tableschemacontroller extends controller
$alltables = $db->getschema()->gettablenames();
if ('all' === $ar**[2]) else
$tables = (array)$ar**[2];
}// 當前資料庫沒有表
if (count(array_filter($tables)) == 0)
$root = dirname(dirname(dirname(__file__)));
$filename = $ar**[3] ? $ar**[3] : '/docs/note/資料庫設計及字典說明.md';
$filepath = $root . $filename;
$fp = fopen($filepath, 'a+');
if (!$fp)
foreach ($tables as $table)
fwrite($fp, "#### $schema->name 表 \n");
// 表頭
$header = "| 欄位名 | 型別 | 說明 | \n";
$header .= "|:--------:|:---------:|:-------:| \n";
fwrite($fp, $header);
// 字段
$row = '';
foreach ($schema->columns as $col => $obj)
fwrite($fp, $row);
fwrite($fp, "\r\n\r\n");
echo "$schema->name successfully \n";
}fclose($fp);
}/**
* 需要過濾的表(不希望生成文件的表)
* @return array
*/protected function filtertables()
/*** 所有表
* @return \string
*/protected function alltables()
/*** 清空
*/public function actionclear()
$root = dirname(dirname(dirname(__file__)));
$filepath = $ar**[2] ? $ar**[2] : '/docs/note/資料庫設計及字典說明.md';
$filepath = $root . $filepath;
if (!is_file($filepath))
$fp = fopen($filepath, 'w');
if (!$fp)
fwrite($fp, '');
fclose($fp);
echo "clear successfully \n";}}
執行命令:
./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]
程式很簡單,但是很實用~~ yii2資料庫遷移
yii migrate create create test table 建立乙個資料庫遷移 yii migrate 提交所有的遷移 yii migrate m160623 034801 create test table 指定類名,提交乙個遷移 yii migrate down 還原最近一次遷移 ...
基礎YII2資料庫操作
注意 為了保持精度,從資料庫中取出的資料都被表示為字串,即使相應的資料庫列型別數值。當建立從乙個帶引數的sql乙個db命令,你應該總是使用繫結引數的方法來防止sql注入攻擊。引數繫結是通過預處理語句來實現。除了防止sql注入攻擊,也可通過一次準備sql語句和多次使用不同的引數執行它提高效能 yii ...
yii2 查詢資料庫語法
1 query0 imgroupuser find where gid 56680dfc60b215d62104a4d8 select user client id all ar2 query1 imgroupuser findall gid 56680dfc60b215d62104a4d8 ar3...