這篇文章主要介紹thinkphp5.0框架如何生成數(shù)據(jù)庫字典,文中介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們一定要看完!

創(chuàng)新互聯(lián)公司作為成都網(wǎng)站建設(shè)公司,專注網(wǎng)站建設(shè)、網(wǎng)站設(shè)計(jì),有關(guān)成都定制網(wǎng)站方案、改版、費(fèi)用等問題,行業(yè)涉及成都辦公窗簾等多個(gè)領(lǐng)域,已為上千家企業(yè)服務(wù),得到了客戶的尊重與認(rèn)可。
示例代碼使用PHP框架:Thinkphp5.0
PHP代碼:
/**
* 生成數(shù)據(jù)庫字典html
* 可直接另存為再copy到word文檔中使用
*
* @return mixed
*/
public function dataDictionary()
{
$tables = Db::query('SHOW TABLE STATUS');
$table_list = array_map('array_change_key_case', $tables);
$table_data = [];
foreach ($table_list as $item) {
$table_name = str_replace(config('database.prefix'),'',$item['name']);
$table_fields = $this->showColumns($table_name);
foreach ($table_fields as &$fieldItem) {
$fieldItem['comment'] = $this->getDbColumnComment($table_name, $fieldItem['name']);
}
$table_data[] = [
'table_name' => $item['name'],
'table_comment' => $item['comment'],
'table_fields' => $table_fields
];
}
$this->assign('table_data', $table_data);
return $this->fetch('');
}
/**
* 顯示表結(jié)構(gòu)信息
*
* @param string $table
* @return array
*/
private function showColumns($table){
$sql = 'SHOW COLUMNS FROM `'.config('database.prefix').$table.'`';
$result = Db::query($sql);
if ($result === false) return array();
$array = array();
if (!empty($result)) {
foreach ($result as $k=>$v) {
$array[$v['Field']] = [
'name' => $v['Field'],
'type' => $v['Type'],
'null' => $v['Null'],
'default' => $v['Default'],
'primary' => (strtolower($v['Key']) == 'pri'),
'autoinc' => (strtolower($v['Extra']) == 'auto_increment'),
];
}
}
return $array;
}
/**
* 獲取數(shù)據(jù)庫字段注釋
*
* @param string $table_name 數(shù)據(jù)表名稱(必須,不含前綴)
* @param string|boolean $field 字段名稱(默認(rèn)獲取全部字段,單個(gè)字段請(qǐng)輸入字段名稱)
* @param string $table_schema 數(shù)據(jù)庫名稱(可選)
* @return string
*/
private function getDbColumnComment($table_name = '', $field = true, $table_schema = ''){
// 接收參數(shù)
$database = config('database');
$table_schema = empty($table_schema) ? $database['database'] : $table_schema;
$table_name = $database['prefix'] . $table_name;
// 處理參數(shù)
$param = [
$table_name,
$table_schema
];
// 字段
$columnName = '';
if($field !== true){
$param[] = $field;
$columnName = "AND COLUMN_NAME = ?";
}
// 查詢結(jié)果
$result = Db::query("SELECT COLUMN_NAME as field,column_comment as comment FROM INFORMATION_SCHEMA.COLUMNS WHERE table_name = ? AND table_schema = ? $columnName", $param);
if(empty($result) && $field !== true){
return $table_name . '表' . $field . '字段不存在';
}
// 處理結(jié)果
foreach($result as $k => $v){
$data[$v['field']] = $v['comment'];
if(strpos($v['comment'], '#*#') !== false){
$tmpArr = explode('#*#', $v['comment']);
$data[$v['field']] = json_decode(end($tmpArr), true);
}
}
// 字段注釋格式不正確
if(empty($data)){
return $table_name . '表' . $field . '字段注釋格式不正確';
}
return count($data) == 1 ? reset($data) : $data;
}Html代碼: 相關(guān)教程:HTML視頻教程
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>快速生成數(shù)據(jù)庫字典</title>
<style type="text/css">
.table-name {
text-align: center;
margin: 15px auto;
font-weight: bold;
font-size: 20px;
}
table {
border-collapse: collapse;
margin: 0 auto;
text-align: center;
width: 550px;
}
table caption {
margin: 15px auto;
}
table td, table th {
border: 1px solid #cad9ea;
color: #666;
height: 30px;
}
table thead th {
background-color: #CCE8EB;
width: 100px;
}
table tr:nth-child(odd) {
background: #fff;
}
table tr:nth-child(even) {
background: #F5FAFA;
}
</style>
</head>
<body>
{foreach $table_data as $tableInfo}
<div class="table-name">{$tableInfo.table_name}(表注釋:{$tableInfo.table_comment})</div>
<table class="table">
<thead>
<tr>
<th>字段</th>
<th>類型</th>
<th>空</th>
<th>默認(rèn)</th>
<th>注釋</th>
</tr>
</thead>
<tbody>
{foreach $tableInfo['table_fields'] as $field}
<tr>
<td>
{$field.name}
</td>
<td>
{$field.type}
</td>
<td>
{$field.null}
</td>
<td style="max-width: 30px;">
{$field.default}
</td>
<td>
{$field.comment}
</td>
</tr>
{/foreach}
</tbody>
</table>
{/foreach}
</body>
</html>以上是thinkphp5.0框架如何生成數(shù)據(jù)庫字典的所有內(nèi)容,感謝各位的閱讀!希望分享的內(nèi)容對(duì)大家有幫助,更多相關(guān)知識(shí),歡迎關(guān)注創(chuàng)新互聯(lián)行業(yè)資訊頻道!
當(dāng)前文章:thinkphp5.0框架如何生成數(shù)據(jù)庫字典
文章位置:http://chinadenli.net/article12/ipjcgc.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供Google、網(wǎng)站建設(shè)、關(guān)鍵詞優(yōu)化、軟件開發(fā)、靜態(tài)網(wǎng)站、自適應(yīng)網(wǎng)站
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如需處理請(qǐng)聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來源: 創(chuàng)新互聯(lián)