您好,欢迎访问一九零五行业门户网

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

本篇文章将教你用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>
想了解更多消息,请关注的其他教程哦!
以上就是thinkphp5.0框架 怎样生成数据库字典的详细内容。
其它类似信息

推荐信息