📜  laravel 迁移种子新鲜 - PHP (1)

📅  最后修改于: 2023-12-03 15:32:36.605000             🧑  作者: Mango

Laravel 迁移种子新鲜 - PHP

介绍

Laravel 是一款流行的 PHP 开发框架,其提供了许多便利的功能,包括数据库迁移和种子填充。本文将介绍如何使用 Laravel 的迁移和种子来管理数据库,并确保数据始终保持新鲜。

迁移

Laravel 迁移是一种可编程的方式,用于定义和修改数据库模式。使用迁移,您可以通过代码来创建或更改数据库表、添加或删除列以及添加或删除索引。此外,迁移还允许您将数据库的状态存储在版本控制系统中,以便其他开发人员可以同步其环境。

创建迁移

要创建迁移,请使用以下 Artisan 命令:

php artisan make:migration create_users_table

这将创建一个名为 create_users_table 的迁移文件,在 database/migrations 目录下。

定义迁移

打开 create_users_table 文件,您将看到两个方法:updownup 方法用于定义创建或修改表的指令,而 down 用于定义撤销这些指令的方式。

示例:

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

class CreateUsersTable extends Migration
{
    public function up()
    {
        Schema::create('users', function (Blueprint $table) {
            $table->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');
    }
}

此示例创建了一个名为 users 的表,其中包含一些列和时间戳。要运行迁移或执行撤销操作,请使用以下 Artisan 命令:

php artisan migrate
php artisan migrate:rollback
修改迁移

在某些情况下,您可能需要修改迁移文件以更改数据库模式。如果文件尚未迁移,则可以直接编辑文件。如果已经迁移了文件,则应创建一个新的迁移文件,以更新表的定义。

示例:

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

class AddAgeToUsersTable extends Migration
{
    public function up()
    {
        Schema::table('users', function(Blueprint $table){
            $table->integer('age')->after('email_verified_at');
        });
    }

    public function down()
    {
        Schema::table('users', function(Blueprint $table){
            $table->dropColumn('age');
        });
    }
}

此迁移在 users 表中添加了一个名为 age 的列。运行迁移或执行撤销操作的方式与创建迁移相同。

种子

Laravel 种子是一种用于填充数据库的机制。使用种子,您可以轻松填充数据库表,以便在开发和测试环境中使用。种子还允许您填充中包含一些随机数据,以模拟真实的使用场景。

创建种子

要创建种子,请使用以下 Artisan 命令:

php artisan make:seeder UsersTableSeeder

这将创建一个名为 UsersTableSeeder 的种子文件,在 database/seeders 目录下。

填充到数据库

打开 UsersTableSeeder 文件,您可以看到一个名为 run 的方法。此方法将包含要执行的填充操作。示例:

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

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

此示例使用 DB Facade 将 users 表填充了两行数据。要运行填充操作,请使用以下 Artisan 命令:

php artisan db:seed --class=UsersTableSeeder
随机填充

如果您需要填充更多数据或使用随机数据进行填充,则可以使用 Laravel 的 Faker 库。

示例:

use Illuminate\Database\Seeder;
use Illuminate\Support\Facades\DB;
use Illuminate\Support\Facades\Hash;
use Illuminate\Support\Str;
use Faker\Factory as Faker;

class UsersTableSeeder extends Seeder
{
    public function run()
    {
        $faker = Faker::create();

        for ($i = 0; $i < 10; $i++) {
            DB::table('users')->insert([
                'name' => $faker->name,
                'email' => $faker->unique()->safeEmail,
                'password' => Hash::make('password'),
            ]);
        }
    }
}

此示例使用 Faker 库生成随机用户名和邮箱,并将这些数据填充到 users 表中。运行 Artisan seed 命令即可填充到数据库。

结论

Laravel 迁移和种子是管理数据库的强大工具。它们允许您轻松地创建、修改、填充数据库,并确保数据始终保持新鲜。本文介绍了如何使用迁移和种子以及如何创建、修改和填充它们。