PHP Laravel框架 迁移与填充

在 Laravel 中,迁移(Migrations)填充(Seeding) 是管理数据库的两个重要概念。它们为数据库操作提供了结构化、版本化以及灵活的解决方案,使得数据库的管理更加高效和便捷。下面将详细介绍这两者的核心概念及应用,帮助你快速理解并掌握它们。


1. 迁移(Migrations)

迁移是 Laravel 提供的数据库结构版本控制系统。它允许你通过 PHP 代码来创建和修改数据库结构,而不需要直接编写 SQL 语句。迁移帮助你在团队中保持数据库结构的一致性,并支持数据库版本的管理。

基本概念

  • 迁移文件:迁移文件是包含数据库结构变更的 PHP 文件。它描述了如何创建、修改或删除数据库表及其字段。
  • up() 方法:迁移文件中的 up() 方法定义了数据库表的创建和修改。
  • down() 方法down() 方法用于回滚迁移操作。通常它会删除表或撤销 up() 方法中所做的更改。

创建迁移

迁移文件通常与模型一同创建。你可以使用 Artisan 命令来生成迁移文件。

php artisan make:migration create_products_table

这条命令会在 database/migrations/ 目录中生成一个以时间戳命名的迁移文件,如:

id();  // 自动创建 id 字段作为主键
            $table->string('name');
            $table->decimal('price', 8, 2);
            $table->timestamps();  // 创建 created_at 和 updated_at 时间戳字段
        });
    }

    public function down()
    {
        // 删除 products 表
        Schema::dropIfExists('products');
    }
}

  • up() 方法:在 up() 方法中,我们定义了要创建的数据库表及其字段。
  • down() 方法:在 down() 方法中,我们定义了回滚时应删除的表或字段。

执行迁移

迁移文件创建后,可以使用以下命令来执行迁移操作,应用数据库结构变更:

php artisan migrate

这个命令会查找所有未执行的迁移,并在数据库中创建/修改表结构。

回滚迁移

如果需要撤销上一次的迁移操作,可以使用:

php artisan migrate:rollback

这会调用 down() 方法,撤销上次迁移的操作。

重置迁移

如果你想回滚所有迁移并重新执行它们,可以使用:

php artisan migrate:reset

刷新迁移

通过以下命令,你可以回滚所有迁移,然后重新运行它们。这对在开发过程中重新设计数据库结构非常有用:

php artisan migrate:refresh

2. 迁移中的常用方法

Laravel 提供了许多常用的 Schema 构建方法来定义数据库表。

数据类型

$table->string('name');  // 字符串类型,默认长度255
$table->integer('age');  // 整型
$table->float('price', 8, 2);  // 浮动数字类型,8位数字,2位小数
$table->decimal('salary', 10, 2);  // 精确数字类型
$table->boolean('is_active');  // 布尔类型
$table->date('birthdate');  // 日期类型
$table->datetime('created_at');  // 日期时间类型
$table->text('description');  // 长文本类型

字段属性

$table->string('email')->unique();  // 唯一索引
$table->foreignId('category_id')->constrained();  // 外键
$table->timestamps();  // 自动创建 created_at 和 updated_at 时间戳

表的修改

// 添加字段
Schema::table('products', function (Blueprint $table) {
    $table->string('sku')->nullable();  // 添加 sku 字段
});

// 删除字段
Schema::table('products', function (Blueprint $table) {
    $table->dropColumn('sku');  // 删除 sku 字段
});

3. 填充(Seeding)

填充是向数据库表中插入测试数据的过程。Laravel 提供了一个强大的填充系统,使得我们可以生成大量的假数据进行开发和测试。

创建填充器

Laravel 使用 php artisan make:seeder 命令来创建填充器文件。一个填充器文件会包含你要插入数据库的数据。

php artisan make:seeder ProductSeeder

这会在 database/seeders 目录下生成一个 ProductSeeder.php 文件。

编写填充数据

填充器文件的内容如下:

create();

        // 手动填充数据
        Product::create([
            'name' => 'Product A',
            'price' => 99.99,
            'description' => 'This is a description for Product A',
        ]);
    }
}

你可以在 run() 方法中使用模型工厂或手动插入数据。

模型工厂(Factory)

工厂是 Laravel 提供的用于快速生成测试数据的功能。你可以为每个模型创建一个工厂,并通过工厂生成大量假数据。

  1. 创建工厂:
php artisan make:factory ProductFactory --model=Product

  1. database/factories/ProductFactory.php 中定义数据生成规则:
 $this->faker->word(),
            'price' => $this->faker->randomFloat(2, 10, 500),
            'description' => $this->faker->sentence(),
        ];
    }
}

执行填充

填充器定义好之后,可以使用以下命令来执行填充操作,将数据插入数据库:

php artisan db:seed --class=ProductSeeder

如果你希望执行所有的填充器,可以直接运行:

php artisan db:seed

刷新填充

你还可以在迁移刷新时同时刷新填充数据:

php artisan migrate:refresh --seed

这会先回滚并重新运行所有迁移,然后执行所有的填充操作。

4. 测试和应用

通过使用迁移和填充,开发者可以:

  1. 快速重建数据库结构:通过迁移文件的版本控制,确保在不同的开发环境中数据库结构一致。
  2. 方便的数据填充:使用工厂生成大量的假数据,方便开发过程中进行测试。

总结

  • 迁移(Migrations):是数据库结构的版本控制工具,通过 PHP 代码来管理数据库表的创建、修改、删除等操作。
    • 使用 php artisan make:migration 创建迁移文件。
    • 迁移文件包括 up()down() 方法,分别用于应用和回滚数据库更改。
    • 使用 php artisan migrate 执行迁移。
  • 填充(Seeding):是向数据库中插入假数据的工具。
    • 使用 php artisan make:seeder 创建填充器文件。
    • 可以使用工厂快速生成大量数据,并将数据插入到数据库中。
    • 使用 php artisan db:seed 执行填充。

你可能感兴趣的:(php,laravel,oracle)