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 migrate:rollback with --path on artisan CLI
Laravel 4 migrate:rollback with --path on artisan CLI