📅  最后修改于: 2023-12-03 15:32:36.605000             🧑  作者: Mango
Laravel 是一款流行的 PHP 开发框架,其提供了许多便利的功能,包括数据库迁移和种子填充。本文将介绍如何使用 Laravel 的迁移和种子来管理数据库,并确保数据始终保持新鲜。
Laravel 迁移是一种可编程的方式,用于定义和修改数据库模式。使用迁移,您可以通过代码来创建或更改数据库表、添加或删除列以及添加或删除索引。此外,迁移还允许您将数据库的状态存储在版本控制系统中,以便其他开发人员可以同步其环境。
要创建迁移,请使用以下 Artisan 命令:
php artisan make:migration create_users_table
这将创建一个名为 create_users_table
的迁移文件,在 database/migrations
目录下。
打开 create_users_table
文件,您将看到两个方法:up
和 down
。up
方法用于定义创建或修改表的指令,而 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 迁移和种子是管理数据库的强大工具。它们允许您轻松地创建、修改、填充数据库,并确保数据始终保持新鲜。本文介绍了如何使用迁移和种子以及如何创建、修改和填充它们。