thinkphp5.0框架怎样生成数据库字典

thinkphp5.0框架怎样生成数据库字典

内容导读

收集整理的这篇技术教程文章主要介绍了thinkphp5.0框架怎样生成数据库字典,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含3939字,纯文字阅读大概需要6分钟

内容图文

本篇文章将教你用thinkphp5.0生成数据库字典,感兴趣的朋友一定不要错过哦!

示例代码使用PHP框架:Thinkphp5.0

PHP代码: 相关教程:PHP视频教程

/**

* 生成数据库字典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('');
 }
 /**

* 显示表结构信息

*

* @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;
 }
 /**

* 获取数据库字段注释

*

* @param string $table_name 数据表名称(必须,不含前缀)

* @param string|boolean $field 字段名称(默认获取全部字段,单个字段请输入字段名称)

* @param string $table_schema 数据库名称(可选)

* @return string

*/
 private function getDbColumnComment($table_name = '', $field = true, $table_schema = ''){


 // 接收参数


 $database = config('database');


 $table_schema = empty($table_schema) ? $database['database'] : $table_schema;


 $table_name = $database['prefix'] . $table_name;


 // 处理参数


 $param = [




 $table_name,




 $table_schema


 ];


 // 字段


 $columnName = '';


 if($field !== true){




 $param[] = $field;




 $columnName = "AND COLUMN_NAME = ?";


 }


 // 查询结果


 $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 . '字段不存在';


 }


 // 处理结果


 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代码: 相关教程:HTML视频教程

 <html><head>

<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">

<title>快速生成数据库字典</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>默认</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>

想了解更多消息,请关注PHP中文网的其他教程哦!

以上就是thinkphp5.0框架 怎样生成数据库字典的详细内容,更多请关注Gxl网其它相关文章!

内容总结

以上是为您收集整理的thinkphp5.0框架怎样生成数据库字典全部内容,希望文章能够帮你解决thinkphp5.0框架怎样生成数据库字典所遇到的程序开发问题。 如果觉得技术教程内容还不错,欢迎将网站推荐给程序员好友。

内容备注

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。


本文关键词:

联系我们

在线咨询:点击这里给我发消息

邮件:w420220301@qq.com