Laravel Migrate

artisan命令行创建migrate

格式:

1php artisan make:migration YourFileName

示例:

1php 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/

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

1php artisan migrate

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

1php 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();
     }
}

 

转载于:https://www.cnblogs.com/wuyuxin/p/7039669.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值