Laravel 迁移文件migrations 和 数据填充seeders

编辑于 2023-02-02 11:07 阅读 831

迁移文件 migration

#创建一个迁移
php artisan make:migration create_store_categories_table

#运行所有未完成的迁移
php artisan migrate

#如果要查看到目前为止已运行哪些迁移
php artisan migrate:status

#如果您希望查看迁移将执行的 SQL 语句而不实际运行它们
php artisan migrate --pretend

#某些迁移操作具有破坏性,这意味着它们可能会导致数据丢失。为了防止您对生产数据库运行这些命令,在执行命令之前,系统将提示您进行确认。若要强制命令在没有提示的情况下运行,请使用以下标志:
php artisan migrate --force

#要回滚最新的迁移操作,您可以使用rollback Artisan 命令。此命令回滚最后一批迁移,其中可能包括多个迁移文件:
php artisan migrate:rollback

#通过向rollback命令提供step选项,可以回滚有限数量的迁移。例如,以下命令将回滚最近5次迁移:
php artisan migrate:rollback --step=5

# migrate:reset命令将回滚应用程序的所有迁移:
php artisan migrate:reset

#refresh命令将回滚所有迁移,然后执行migrate命令。这个命令有效地重新创建您的整个数据库:
php artisan migrate:refresh

# 刷新数据库并运行所有数据库seeds...
php artisan migrate:refresh --seed

#通过向refresh命令提供step选项,可以回滚并重新迁移有限数量的迁移。例如,下面的命令将回滚并重新迁移最近的五次迁移:
php artisan migrate:refresh --step=5

#migrate:fresh命令将删除数据库中的所有表,然后执行migrate命令:
php artisan migrate:fresh
php artisan migrate:fresh --seed

#执行某个迁移/回滚某个迁移,官方是不支持的,只能采用特殊办法了
php artisan migrate --path=database/migrations/temp/
php artisan migrate:rollback --path=database/migrations/temp/

php artisan migrate --path=database/migrations/2023_01_16_203228_create_promoters_table.php
php artisan migrate:rollback --path=database/migrations/2023_01_16_203228_create_promoters_table.php --step=100

数据填充 seed

#创建一个seed,表名为users
php artisan make:seeder UsersTableSeeder
#再创建一个seed,表名为users2
php artisan make:seeder Users2TableSeeder

#执行一个seed
php artisan db:seed --class=UsersTableSeeder

#执行所有seed,会执行DatabaseSeeder.php
php artisan db:seed

#您还可以使用migrate:fresh命令和——seed选项来为数据库播种,这将删除所有的表并重新运行所有的迁移。此命令对于完全重新构建数据库非常有用。——seeder选项可用于指定要运行的特定种子
php artisan migrate:fresh --seed
php artisan migrate:fresh --seed --seeder=UserSeeder

#某些播种操作可能会导致您更改或丢失数据。为了防止对生产数据库运行播种命令,在生产环境中执行播种命令之前,将提示您进行确认。要强制种子程序在没有提示的情况下运行,使用——force标志
php artisan db:seed --force

cat database/seeders/DatabaseSeeder.php

<?php

namespace Database\Seeders;

use Illuminate\Database\Seeder;

class DatabaseSeeder extends Seeder
{
    /**
     * Seed the application's database.
     *
     * @return void
     */
    public function run()
    {
        // \App\Models\User::factory(10)->create();
//        $this->call(UsersTableSeeder::class);
//        $this->call(Users2TableSeeder::class);
        $this->call([
            UsersTableSeeder::class,
            Users2TableSeeder::class,
        ]);
    }
}

参考

https://laravel.com/docs/9.x/migrations

https://laravel.com/docs/9.x/seeding

广而告之,我的新作品《语音助手》上架Google Play了,欢迎下载体验