数据迁移,可以理解为,通过运行php文件创建数据表并向数据表添加数据。
优点:可以记录数据库状态的改变,可以对数据库的状态进行回退。
数据库迁移的步骤:
-> 创建一个PHP文件,用于设计表结构
-> 执行该PHP文件,根据表结构创建表
-> 创建一个PHP文件,用于填充表的数据
-> 执行该PHP文件,完成表中数据的填充
1、迁移文件的设计
数据库迁移文件的设计实际上就是对数据表的操作和维护,在laravel框架中是通过结构生成器(Schema类)来实现的,
常用字段类型方法:
$table->increments('id');
创建一个主键是id
,并且是自增的。
$table->char('name',4);
相当于char类型,并带有长度
$table->decimal('amount',5,2);
相当于decimal类型,并带有精度与基数。
$table->integer('number');
相当于 int类型
$table->softDeletes();
加入deleted_at
字段软删除使用
$table->string('name',32);
相当于varchar类型,并指定长度。
$table->timestamps();
加入created_at
和updated_at
字段
$table->rememberToken();
加入remember_token
字段,使用类型为varchar(100)
$table->float('amount');
相当于float类型
常用修饰方法:
$table->float('amount')->first();
将此字段放在表的首位(只能在MySQL中使用)
$table->float('amount')->after('id');
将此字段放在指定字段后面(只能在MySQL中使用)
$table->string('email')->nullable();
表示此字段允许为NULL
$table->string('email')->notNull();
表示此字段不允许为NULL
$table->string('email')->default('');
指定此字段的默认值
$table->integer('number')->unsigned();
表示整数为非负数
$table->integer('number')->comment('my comment');
添加注释信息
索引方法表
$table->primary('id');
设置主键
$table->primary(array('first','last'));
设置复合主键
$table->unique('email');
设置唯一索引
$table->index('');
设置基本索引
2、建立迁移文件(用于设计表结构)
-> 使用artisan
的make:migration
命令生成数据表的迁移文件:
php artisan make:migration create_表名_table
// 创建新的数据表,生成的迁移文件中会带有表名及基本的表字段
php artisan make:migration create_表名_table --create=表名
// 修改已有数据表
php artisan make:migration modify_表名_table --table=表名
// 创建模型同步创建迁移文件
php artisan make:model 模型名 -m
注:如果表名有前缀,--create=表名
及--table=表名
中表名不需要包含前缀
-> 迁移文件在database/migrations
目录下
-> 通过artisan命令创建的迁移文件,默认包含up()
和down()
方法:
up()
方法是执行迁移命令时创建的表结构
down()
方法是执行回滚时删除的表结构
示例:
3、执行数据迁移
-> 执行迁移命令:
php artisan migrate //执行的是所有未执行过迁移的文件;
-> 执行回滚迁移:
php artisan migrate:rollback //执行最后一次迁移文件的down方法
注意:在执行时,可以把laravel中默认的两个迁移文件给删除掉。
-> 其他相关命令:
php artisan migrate:status //查看数据库迁移文件的执行情况
php artisan migrate:refresh //先执行所有的迁移文件的down方法,再执行所有的迁移文件的up方法
php artisan migrate:reset //执行所有迁移文件的down方法
注意:第一次执行php artisan migrate时,会自动创建一个migrations表,用于记录迁移文件信息的,batch字段表示批次,回滚时按批次来。
4、创建数据填充文件(种子文件)
使用artisan
的make:seeder
命令生成数据表的填充文件(填充器)
php artisan make:seeder 填充器名
示例:向users作者表填充数据
设置添加的数据,可以使用DB类,也可以使用模型操作。要使用模型操作,先要引入模型。
设置添加的数据如下:
5、执行填充文件
①执行单个种子文件
php artisan db:seed --class = 填充器名
填充效果如下:
注意:如果在执行填充文件时,出现错误“Class UserTableSeeder does not exist”,则使用
composer dump-autoload
命令,优化一下自动加载类。②执行多个种子文件
php artisan db:seed
需要在DatabaseSeeder.php
中添加$this->call(自定义种子文件类名::class)
网友评论