artisan命令行创建migrate
格式:
php artisan make:migration YourFileName
示例:
php artisan make:migration create_books_table
我们找到laravel目录下databasemigrations2017_XX_XX_XXXXXX_create_books_table.php
注意:XX代表时间戳,因时而异
<?php
use IlluminateDatabaseSchemaBlueprint;
use IlluminateDatabaseMigrationsMigration;
class CreateBooksTable extends Migration
{
/**
* Run the migrations.
*
* @return void
*/
public function up()
{
//
}
/**
* Reverse the migrations.
*
* @return void
*/
public function down()
{
//
}
}
这里的CreateBooksTable类继承了Migration,我们看下Migration类
namespace IlluminateDatabaseMigrations;
abstract class Migration
{
/**
* The name of the database connection to use.
*
* @var string
*/
protected $connection;
/**
* Get the migration connection name.
*
* @return string
*/
public function getConnection()
{
return $this->connection;
}
}
这里我们把up函数改写成
public function up()
{
Schema::create('chs', function (Blueprint $table) {
$table->increments('id');
$table->string('slug')->unique();//additional
$table->string('title');//additional
$table->text('content');//additional
$table->timestamps();
$table->timestamp('published_at')->index();//additional
});
}
同时参考以下文档,文档选自http://laravelbook.com/laravel-migrations-managing-databases/


一切准备就绪,我们开始迁移
php artisan migrate
如果你迁移后发觉并不是你想要的数据表,可以回滚
php artisan migrate:rollback
这里要给大家提个醒,down方法一定要写,可能有些人这个方法会空着,觉得只要数据表创建出来了就没事了,但是一旦涉及rollback又没有down方法,你的migrate操作就是不可逆的!
就像这样:
<?php
use IlluminateDatabaseSchemaBlueprint;
use IlluminateDatabaseMigrationsMigration;
class CreateCommentsTable extends Migration
{
/**
* Run the migrations.
*
* @return void
*/
public function up()
{
Schema::create('comments', function (Blueprint $table) {
$table->increments('id');
$table->integer('postid');
$table->string('title');//additional
$table->text('content');//additional
//$table->timestamps();
$table->timestamp('published_at')->index();//additional
});
}
/**
* Reverse the migrations.
*
* @return void
*/
public function down()
{
Schema::drop('comments');
}
}
Laravel使用了门面模式
namespace IlluminateSupportFacades;
/**
* @see IlluminateDatabaseSchemaBuilder
*/
class Schema extends Facade
{
/**
* Get a schema builder instance for a connection.
*
* @param string $name
* @return IlluminateDatabaseSchemaBuilder
*/
public static function connection($name)
{
return static::$app['db']->connection($name)->getSchemaBuilder();
}
/**
* Get a schema builder instance for the default connection.
*
* @return IlluminateDatabaseSchemaBuilder
*/
protected static function getFacadeAccessor()
{
return static::$app['db']->connection()->getSchemaBuilder();
}
}