运行`migrate:create`命令
如:
~~~
php console migrate:create UpdateBookTable
~~~
将会创建一个文件名为`YYYYMMDDHHMMSS_update_book_table.php`的文件
前面14位时间戳就是版本号
里面的内容大概是这样的
~~~
<?php
use Think\Migration\Migration;
class UpdateBookTable extends Migration
{
/**
* Change Method.
*
public function change(){
}
*/
/**
* Migrate Up.
*/
public function up()
{
}
/**
* Migrate Down.
*/
public function down()
{
}
}
~~~
### Up 方法
迁移的时候执行的方法
### Down 方法
回滚的时候执行的方法
### Change 方法
迁移的时候执行的方法,回滚的时候会逆向执行里面对数据库结构的操作
比如
~~~
<?php
use Think\Migration\Migration;
class CreateUserLoginsTable extends Migration
{
/**
* Change Method.
*
public function change()
{
// create the table
$table = $this->table('user_logins');
$table->addColumn('user_id', 'integer')
->addColumn('created', 'datetime')
->create();
}
/**
* Migrate Up.
*/
public function up()
{
}
/**
* Migrate Down.
*/
public function down()
{
}
}
~~~
> 在`change`方法里创建或者更新数据表结构的时候,必须使用Table的`create()`或者`update()`方法 , 使用`save()`的时候工具不能自动判断是创建还是更新
#### Table有以下方法
> * createTable
> * renameTable
> * addColumn
> * renameColumn
> * addIndex
> * addForeignKey
### 直接执行SQL语句
~~~
<?php
use Think\Migration\Migration;
class MyNewMigration extends Migration
{
/**
* Migrate Up.
*/
public function up()
{
// execute()
$count = $this->execute('DELETE FROM users'); // returns the number of affected rows
// query()
$rows = $this->query('SELECT * FROM users'); // returns the result as an array
}
/**
* Migrate Down.
*/
public function down()
{
}
}
~~~
### 获取数据
~~~
<?php
use Think\Migration\Migration;
class MyNewMigration extends Migration
{
/**
* Migrate Up.
*/
public function up()
{
// fetch a user
$row = $this->fetchRow('SELECT * FROM users');
// fetch an array of messages
$rows = $this->fetchAll('SELECT * FROM messages');
}
/**
* Migrate Down.
*/
public function down()
{
}
}
~~~