📜  laravel 迁移种子 - PHP (1)

📅  最后修改于: 2023-12-03 14:43:50.202000             🧑  作者: Mango

Laravel 迁移与种子数据

简介

在使用 Laravel 开发应用程序时,迁移和种子数据是非常重要的概念。迁移用于创建和修改数据库表结构,而种子数据用于填充数据库初始数据。这两个功能结合起来可以帮助开发者快速搭建和维护数据库。

迁移

迁移是 Laravel 提供的一种管理数据库结构变化的方法。通过迁移,开发者可以创建数据库表、修改表结构、添加索引等等操作,而无需手动在数据库中执行 SQL 语句。

创建迁移

首先,使用命令行工具生成一个迁移文件:

php artisan make:migration create_users_table

这个命令会在 database/migrations 目录下生成一个新的迁移文件。在这个文件中,可以编写用于创建 users 表的代码。

编写迁移代码

在生成的迁移文件中,可以使用 Laravel 提供的 Schema 类来定义表的字段和其他约束。

use Illuminate\Database\Schema\Blueprint;
use Illuminate\Support\Facades\Schema;

class CreateUsersTable extends Migration
{
    public function up()
    {
        Schema::create('users', function (Blueprint $table) {
            $table->bigIncrements('id');
            $table->string('name');
            $table->string('email')->unique();
            $table->timestamp('email_verified_at')->nullable();
            $table->string('password');
            $table->rememberToken();
            $table->timestamps();
        });
    }

    public function down()
    {
        Schema::dropIfExists('users');
    }
}

在上面的例子中,我们定义了一个包含 idnameemailpassword 等字段的 users 表。up() 方法用于创建表,down() 方法用于删除表。

执行迁移

通过以下命令即可执行迁移:

php artisan migrate

执行迁移后,Laravel 会自动在数据库中创建对应的表结构。

修改迁移

如果需要修改已有的迁移文件,可以使用 migrate:rollback 命令回滚至上一个迁移,然后再次执行 migrate 命令更新数据库。

种子数据

种子数据用于填充应用程序的数据库初始数据,例如默认用户、测试数据等。

创建种子文件

使用以下命令创建一个种子文件:

php artisan make:seeder UserSeeder

这个命令会在 database/seeders 目录下生成一个新的种子文件,在这个文件中可以编写填充数据的代码。

编写种子代码

在生成的种子文件中,可以使用 Laravel 提供的 Seeder 类来填充数据。

use Illuminate\Database\Seeder;
use Illuminate\Support\Facades\DB;
use Illuminate\Support\Facades\Hash;

class UserSeeder extends Seeder
{
    public function run()
    {
        DB::table('users')->insert([
            'name' => 'John Doe',
            'email' => 'john@example.com',
            'password' => Hash::make('password'),
        ]);
    }
}

在上面的例子中,我们向 users 表中插入了一条用户数据。

执行种子

通过以下命令可以执行种子操作:

php artisan db:seed

执行种子后,数据将被插入到数据库中。

数据填充顺序

要注意,种子文件的执行顺序由 DatabaseSeeder 类中的 run() 方法定义。在这个方法中,可以指定要执行种子的顺序。

总结

迁移和种子数据是 Laravel 中重要的数据库管理工具。通过迁移,我们可以方便地创建、修改和删除数据库表结构,而种子数据则用于填充初始数据。这些功能的结合使用可以提高开发效率,帮助我们轻松管理数据库。