Laravel 数据库迁移与数据填充

参考:https://www.jianshu.com/p/4ad6c9239aa8

  1. 什么是数据库迁移?
    数据库迁移就像是数据库的版本控制,可以让团队轻松修改并共享应用程序的数据库结构,避免不断修改复制数据库表结构的麻烦。
    迁移文件将会被放置在 database/migrations 目录下。一个migration文件包含两部分:up可为数据添加新的数据表字段或索引,down则是用于执行回滚操作。
  2. 创建迁移文件
    php artisan make:migration create_users_table --create=users
    注意:create_users_table 为迁移文件的文件名; --create 指定迁移被执行时会创建的新数据表名,该表名为 users
  3. 执行迁移
    php artisan migrate 运行所有未运行过的迁移,也就是将数据库不存在的迁移放入数据库。生成的数据表默认字符集为 utf8mb4,排序规则 utf8mb4_unicode_ci
  4. 回滚操作
    php artisan migrate:rollback(对上一次执行的[批量]迁移回滚,其中可能包含多个迁移文件)
    php artisan migrate:rollback --step=3(回滚上一次执行的最后3个迁移)
    php artisan migrate:reset(回滚应用程序中的所有迁移)
  5. 添加或者修改已经迁移的表字段
    a. 创建迁移文件:php artisan make:migration change_user_table --table=users(–table 可用来指定数据表的名称)
    b. 编辑up方法:
    Schema::table('users', function (Blueprint $table) {
        if (!Schema::hasColumn('users','deleted_at')) {
           $table->softDeletes();//添加软删除功能,会在users表中添加deleted_at字段
        }
    });
    
    c. 执行迁移:php artisan migrate(执行完会发现数据已经有deleted_at字段)
  6. 数据填充
    我们可以使用 laravel 框架的seeder类来执行数据填充,所有由框架生成的 seeders 都将被放置在 database/seeds 目录下
    (1)使用
    创建填充文件:php artisan make:seeder UsersTableSeeder
    a. 填充单条数据
    在 run 方法下,填充数据
    \Illuminate\Support\Facades\DB::table('users')->insert([ 'name' => str_random(10), 'email' => str_random(10).'@gmail.com', 'password'=> bcrypt('123'), ]);
    执行:在 DatabaseSeeder 下的 run 方法里,使用call方法执行额外的填充类($this->call(UserTableSeeder::class);)
    将数据插入数据库:php artisan db:seed
    b. 批量填充数据:模型工厂
    在database/factories下重命名ModelFactory为UserFactory.php
    修改UserTableSeeder下的run方法:factory(App\User::class,50)->create();(造出来50条数据)
    执行:在 DatabaseSeeder 下的 run 方法里,使用call方法执行额外的填充类
    将数据插入数据库:php artisan db:seed
  7. 可能报错
    (1)删除users的迁移文件再次创建时报错include(D:…\vendor\composer/…/…/database/migrations/2014_10_12_000000_create_users_table.php): failed to open stream: No such file or directory
    原因:php artisan make:migration create_users_table创建数据库迁移文件后,会在autoload_static.php和autoload_classmap.php这两个文件中添加迁移文件的缓存,所以再次执行创建数据库迁移文件命令时,会报上面的错误。
    解决:执行composer dump-autoload更新这两个文件 或者 运行composer update 或者 删除vendor/composer/autoload_classmap.php和autoload_static.php里面的create_users_table
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值