# 数据库migration的使用改造-表
用到的类库
```php
use ClassLibrary\ClMigrateTable;
```
我用一个用户表来做例子。先创建数据库表
```php
php think migrate:create User
```
这个时候对应创建了
```php
database/migrations/20180122074850_user.php
```
生成的文档内容
```php
<?php
use think\migration\Migrator;
use think\migration\db\Column;
class User extends Migrator
{
public function change()
{
}
}
```
修改代码之后
```php
<?php
use think\migration\Migrator;
use think\migration\db\Column;
use ClassLibrary\ClMigrateTable;
class User extends Migrator
{
public function up()
{
$table = 'user';
if($this->hasTable($table)){
return;
}
$this->table($table)
->setComment(
ClMigrateTable::instance()
->fetch('用户表')
)
->create();
}
public function down()
{
parent::down();
$table = 'user';
if($this->hasTable($table)){
$this->dropTable($table);
}
}
}
```
此时,看下数据库表DDL
```sql
CREATE TABLE `user` (
`id` int(11) NOT NULL AUTO_INCREMENT,
PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COMMENT='{"name":"用户表","create_api":["getList","get","create","delete","update"]}';
```
其中COMMENT,是一个JSON字符串,这个JSON的字符串的想象空间就无穷了。
### ClMigrateTable函数说明
函数名 | 注释
---|---
instance | 获取实例对象
fetch | 获取表Comment定义Json
usingCache | 是否使用缓存,如果缓存时间大于0,则会生成带缓存的代码1
createView | 暂时忽略该方法,为后期考虑
createApi | 用于控制创建的方法,默认会自动创建5个Api接口
getUpdateCommentSql | 用于获取修改table.comment的注释语句,目前Migrate没有提供修改表comment的方法,故采用直接执行sql语句的办法来修改表comment