Laravel Migrate

Posted 吴雨欣

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Laravel Migrate相关的知识,希望对你有一定的参考价值。

artisan命令行创建migrate

格式:

1 php artisan make:migration YourFileName

示例:

1 php artisan make:migration create_books_table

我们找到laravel目录下database\\migrations\\2017_XX_XX_XXXXXX_create_books_table.php

注意:XX代表时间戳,因时而异

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
<?php
use Illuminate\\Database\\Schema\\Blueprint;
use Illuminate\\Database\\Migrations\\Migration;
class CreateBooksTable extends Migration
{
    /**
     * Run the migrations.
     *
     * @return void
     */
    public function up()
    {
        //
    }
    /**
     * Reverse the migrations.
     *
     * @return void
     */
    public function down()
    {
        //
    }
}

 

这里的CreateBooksTable类继承了Migration,我们看下Migration类

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
namespace Illuminate\\Database\\Migrations;
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函数改写成

1
2
3
4
5
6
7
8
9
10
11
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/

一切准备就绪,我们开始迁移

1 php artisan migrate

如果你迁移后发觉并不是你想要的数据表,可以回滚

1 php artisan migrate:rollback

这里要给大家提个醒,down方法一定要写,可能有些人这个方法会空着,觉得只要数据表创建出来了就没事了,但是一旦涉及rollback又没有down方法,你的migrate操作就是不可逆的!  

就像这样:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
<?php
use Illuminate\\Database\\Schema\\Blueprint;
use Illuminate\\Database\\Migrations\\Migration;
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使用了门面模式

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
namespace Illuminate\\Support\\Facades;
/**
 * @see \\Illuminate\\Database\\Schema\\Builder
 */
class Schema extends Facade
{
    /**
     * Get a schema builder instance for a connection.
     *
     * @param  string  $name
     * @return \\Illuminate\\Database\\Schema\\Builder
     */
    public static function connection($name)
    {
        return static::$app[\'db\']->connection($name)->getSchemaBuilder();
    }
    /**
     * Get a schema builder instance for the default connection.
     *
     * @return \\Illuminate\\Database\\Schema\\Builder
     */
    protected static function getFacadeAccessor()
    {
        return static::$app[\'db\']->connection()->getSchemaBuilder();
    }
}

 

以上是关于Laravel Migrate的主要内容,如果未能解决你的问题,请参考以下文章

Laravel 4.2 和 migrate 无法正常工作

Laravel 4 migrate:rollback with --path on artisan CLI

Laravel 4 migrate:rollback with --path on artisan CLI

php Laravel Migrate错误修复

php Laravel Artisan Migrate创建领域

laravel 5.4 中使用migrate