📜  一次创建迁移模型和播种器 laravel - PHP (1)

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

介绍如何一次创建迁移模型和种子数据

如果你在使用 Laravel 开发应用程序,你会发现在创建新的数据库表时需要进行一些步骤。这些步骤包括创建迁移、创建模型和编写种子数据。在这篇文章中,我们将介绍如何一次性完成这些步骤。

创建迁移
创建迁移文件

在 Laravel 中,我们使用 php artisan make:migration 命令来创建新的迁移。例如,如果我们要创建一个名为 create_users_table 的迁移,我们可以运行以下命令:

php artisan make:migration create_users_table

这将在 database/migrations 目录中创建一个新的迁移文件。

编辑迁移文件

现在我们可以编辑新创建的迁移文件了。在这个文件中,我们可以编写与创建新表相关的所有语句。例如,以下是创建 users 表的语句:

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();
});
创建模型
创建模型文件

在 Laravel 中,我们使用 php artisan make:model 命令来创建新的模型。例如,如果我们要创建一个名为 User 的模型,我们可以运行以下命令:

php artisan make:model User

这将在 app 目录中创建一个名为 User 的新模型文件。

编辑模型文件

编辑新创建的模型文件,将其与我们刚刚创建的迁移文件对应起来。以下是一个简单的示例:

class User extends Model
{
    protected $fillable = [
        'name',
        'email',
        'password',
    ];
}
创建种子数据
创建种子文件

在 Laravel 中,我们使用 php artisan make:seeder 命令来创建新的种子文件。例如,如果我们要为 users 表创建一个名为 UsersTableSeeder 的种子文件,我们可以运行以下命令:

php artisan make:seeder UsersTableSeeder

这将在 database/seeds 目录中创建一个新的种子文件。

编辑种子文件

我们可以编辑新创建的种子文件,将其与我们刚刚创建的迁移文件对应起来。以下是一个简单的示例:

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

        DB::table('users')->insert($users);
    }
}
执行迁移与播种

现在我们已经完成了所有的准备工作,可以执行迁移和播种命令了。在 Laravel 中,我们使用以下两个命令来执行这两个操作:

php artisan migrate
php artisan db:seed

执行以上命令后,我们就可以在 users 表中看到两条新记录了。

总结

在 Laravel 中,一次性地创建迁移、模型和种子数据会让我们更高效地进行开发工作。在这篇文章中,我们介绍了如何使用相应的命令快速完成这些步骤,并提供了示例代码来帮助你更好地理解这些概念。